schema { query: Query mutation: Mutation } "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" results: [AllocationToResourceResult!]! } "A successfully added allocated resource" type AddedAllocatedResource { """ The resource ID (includes placeholder index for placeholders, e.g. "134007785_1") """ resource_id: ID! "Type of resource: USER or PLACEHOLDER" resource_type: PlannerResourceKind! } "A unique resource present in the planner" type AllocatedResource { "The Resource id" resource_id: ID! "Type of resource" resource_type: PlannerResourceKind! "The Resource's name" resource_name: String! } "A resource to add to the planner without allocations" input AllocatedResourceInput { "Resource or placeholder ID" id: ID! "Type of resource: USER or PLACEHOLDER" resource_type: PlannerResourceKind! } "Result of an individual resource allocation operation" type AllocatedResourceOperationResult { "Whether the resource was successfully added" success: Boolean! "The successfully added resource, present when success is true" resource: AddedAllocatedResource "Error details, present when success is false" error: Error } "A single allocation in the planner" type Allocation { "The allocation ID" id: ID! "The resource allocated" resource: AllocationResource! "The allocation timeline" timeline: AllocationTimeline! "Effort allocation data" effort: AllocationEffort! } "Effort allocation data" type AllocationEffort { "Total effort of the allocation" total_effort: Float! "Calculated effort for the period" effort_per_period: Float } "The resource allocated" type AllocationResource { "Resource ID" id: ID! "Type of resource" type: PlannerResourceKind! "Resource Name" name: String! } "A timeline with start and end dates" type AllocationTimeline { "Start date" from: Date! "End date" to: Date! } "An allocation to add to an existing resource on the planner" input AllocationToResourceInput { """ Resource ID (plain "123" for users, "456_2" for placeholder #2) """ resource_id: ID! "Type of resource" resource_type: PlannerResourceKind! "Effort value (e.g., 1 FTE, 8 hours). Must be greater than 0" effort: Float! "Unit of effort: DAILY, WEEKLY, MONTHLY, FTE, or TOTAL" effort_type: EffortUnit! "Start date (ISO 8601 format: YYYY-MM-DD)" from: String! "End date (ISO 8601 format: YYYY-MM-DD)" to: String! } "Result of adding a single allocation to a resource" type AllocationToResourceResult { "Resource ID" resource_id: ID! "The created allocation item ID, null if creation failed" allocation_id: ID "Whether the allocation was created successfully" success: Boolean! "Error details if the allocation failed" error: Error } "A single allocation update. All fields except allocation_id are optional - only provided fields will be updated." input AllocationUpdateInput { "ID of the allocation to update" allocation_id: ID! "New effort value" effort: Float "New effort unit: DAILY, WEEKLY, MONTHLY, FTE, or TOTAL" effort_type: EffortUnit "New start date (ISO 8601 format: YYYY-MM-DD)" from: String "New end date (ISO 8601 format: YYYY-MM-DD)" to: String "Reassign allocation to a different resource (must exist in the planner)" resource_id: ID } "Input for assigning a time off schedule to multiple users and/or teams" input AssignTimeOffInput { "IDs of the users to assign the time off schedule to; maximum 100 per call" user_ids: [ID!] "IDs of the teams to assign the time off schedule to; maximum 100 per call" team_ids: [ID!] "ID of the time off schedule to assign; pass the account default time off ID to revert the resource to the account default" time_off_id: ID! } "Per-resource outcomes of a time off assignment, split by resource kind" type AssignTimeOffResult { "One result per user id passed to the mutation" users: [AssignTimeOffUserResult!]! "One result per team id passed to the mutation" teams: [AssignTimeOffTeamResult!]! } "Result of a time off assignment for a single team. Batch mutations return one of these per requested team, allowing partial success." type AssignTimeOffTeamResult { "ID of the team this result applies to" team_id: ID! "Whether the operation succeeded" success: Boolean! "Structured error details, null if the operation succeeded" error: Error } "Result of a time off assignment for a single user. Batch mutations return one of these per requested user, allowing partial success." type AssignTimeOffUserResult { "ID of the user this result applies to" user_id: ID! "Whether the operation succeeded" success: Boolean! "Structured error details, null if the operation succeeded" error: Error } "Input for assigning a work schedule to multiple users and/or teams" input AssignWorkScheduleInput { "IDs of the users to assign the work schedule to; maximum 100 per call" user_ids: [ID!] "IDs of the teams to assign the work schedule to; maximum 100 per call" team_ids: [ID!] "ID of the work schedule to assign; pass the account default schedule ID to revert to the account default" work_schedule_id: ID! } "Per-resource outcomes of a work schedule assignment, split by resource kind" type AssignWorkScheduleResult { "One result per user id passed to the mutation" users: [AssignWorkScheduleUserResult!] "One result per team id passed to the mutation" teams: [AssignWorkScheduleTeamResult!] } "Per-team outcome of a work schedule assignment" type AssignWorkScheduleTeamResult { "ID of the team this result applies to" team_id: ID "Whether the operation succeeded" success: Boolean! "Structured error details, null if the operation succeeded" error: Error } "Per-user outcome of a work schedule assignment" type AssignWorkScheduleUserResult { "ID of the user this result applies to" user_id: ID "Whether the operation succeeded" success: Boolean! "Structured error details, null if the operation succeeded" error: Error } "Represents a single attribute type option for a resource" type Attribute { "Unique identifier for the attribute" id: ID! "Name of the attribute" name: String! "Whether the attribute is enabled and can be used" is_active: Boolean! } "A string or number value for comparison" scalar CompareValue "Input for creating a PTO entry for a user" input CreatePtoEntryInput { "ID of the user to create the PTO entry for" user_id: ID! "Start date of the PTO period in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" start: String! "End date of the PTO period in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" end: String! } "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! "Display name for this time off entry" name: String! "Start date of the non-working period in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" start: String! "Type of the time off entry. Defaults to CUSTOM when omitted." type: TimeOffEntryKind "End date of the non-working period in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" 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!] } "A date." scalar Date "Response indicating whether the allocation deletion succeeded" type DeleteAllocationResponse { "Indicates whether the allocation was successfully deleted." success: Boolean! "The ID of the allocation that was targeted for deletion." allocation_id: ID! } "Response indicating whether the planner resource deletion succeeded" type DeletePlannerResourceResponse { "Indicates whether the resource was successfully deleted." success: Boolean! "The ID of the resource that was targeted for deletion." resource_id: ID! "Number of allocation items that were deleted." deleted_allocation_count: Int! } "A resource from the directory" type DirectoryResource { "The identifier of the directory resource." id: ID! "The name of the directory resource." name: String! "The email address of the directory resource." email: String "The job role of the directory resource." job_role: String "The skills of the directory resource." skills: [String!] "The location of the directory resource." location: String } "Attributes that can be updated on a resource directory entry" enum DirectoryResourceAttribute { JOB_ROLE SKILLS LOCATION } "The type of a directory resource" enum DirectoryResourceKind { USER VIEWER GUEST } "Paginated response containing directory resources and cursor for next page" type DirectoryResourcesResponse { "Response identifier" id: ID! "List of directory resources" resources: [DirectoryResource!]! "Cursor for fetching the next page of results" cursor: String } "Unit of effort calculation" enum EffortUnit { DAILY WEEKLY MONTHLY FTE TOTAL } "User-facing error with code and optional path" type Error { "Human-readable error message" message: String! "Machine-readable error code for client handling" code: String! """ Field path that caused the error (e.g., ["input", "from"]) """ path: [String!] } "A multipart file" scalar File "Paginated response containing allocations" type GetAllocationsResponse { "List of allocations" allocations: [Allocation!] "Cursor for fetching the next page of results" cursor: String } "Successful response containing available attribute options for a specific attribute type" type GetAttributesResponse { "The attribute type for which attributes were fetched" attribute_type: String! "List of available attributes containing id, name, and is_active" attributes: [Attribute!]! } "An ISO 8601-encoded datetime (e.g., 2024-04-09T13:45:30Z)" scalar ISO8601DateTime "The direction to order the items by" enum ItemsOrderByDirection { asc desc } input ItemsQuery { "A list of rules" rules: [ItemsQueryRule!] "A list of rule groups" groups: [ItemsQueryGroup!] "The operator to use for the query rules or rule groups. Default: AND" operator: ItemsQueryOperator = and "A list of item IDs to fetch. Use this to fetch a specific set of items by their IDs. Limited to 100 IDs in ItemsQuery" ids: [ID!] "Sort the results by specified columns" order_by: [ItemsQueryOrderBy!] } "A group of rules or rule groups" input ItemsQueryGroup { "A list of rules" rules: [ItemsQueryRule!] "A list of rule groups" groups: [ItemsQueryGroup!] "The operator to use for the query rules or rule groups. Default: AND" operator: ItemsQueryOperator = and } "The condition between the query rules" enum ItemsQueryOperator { or and } "Sort the results by specified columns" input ItemsQueryOrderBy { column_id: String! "Sort direction (defaults to ASC)" direction: ItemsOrderByDirection = asc } "A rule to filter items by a specific column" input ItemsQueryRule { column_id: ID! compare_value: CompareValue! compare_attribute: String operator: ItemsQueryRuleOperator = any_of } "The operator to use for the value comparison" enum ItemsQueryRuleOperator { any_of not_any_of is_empty is_not_empty within_the_last within_the_next greater_than greater_than_or_equals lower_than lower_than_or_equal between starts_with ends_with contains_text contains_terms not_contains_text } "A JSON formatted string." scalar JSON "Type of resource in the planner" enum PlannerResourceKind { USER PLACEHOLDER } "A personal time off entry for a user" type PtoEntry { "Unique identifier of the time off entry" id: ID! "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! } "Information about a resource directory attribute type" type ResourceAttributeTypeInfo { "The attribute type enum value" type: ResourceAttributeTypeKey "Human-readable description of the attribute" description: String "User-friendly display name" display_name: String "Whether the attribute values are managed by resource managers" is_managed: Boolean "Whether the attribute can be used for filtering the directory" is_filterable: Boolean } "Available attribute types that can be retrieved from the resource directory" enum ResourceAttributeTypeKey { NAME EMAIL TEAMS BASE_ROLE STATUS LOCATION SKILLS JOB_ROLE RESOURCE_MANAGER } "Resources availability with per-resource references and top-level schedule/time-off data" type ResourcesAvailability { "Per-user availability references" users_assigned_schedules: [UserAssignment!]! "Per-team availability references" teams_assigned_schedules: [TeamAssignment!]! "All work schedules referenced by users_assigned_schedules or teams_assigned_schedules entries" work_schedules: [WorkSchedule!]! "All time off schedules referenced by users_assigned_schedules or teams_assigned_schedules entries" company_time_offs: [TimeOff!]! "ID of the account-level default work schedule" default_work_schedule_id: ID! "ID of the account-level default time off schedule" default_company_time_off_id: ID! } "A team's assigned work schedule and time off schedule IDs" type TeamAssignment { "ID of the team" team_id: ID! "ID of the work schedule assigned to this team" work_schedule_id: ID! "ID of the time off schedule assigned to this team" company_time_off_id: ID! } "A named time off schedule with all its 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! "All non-working date entries in this time off schedule" entries: [TimeOffEntry!]! "Whether any users are currently assigned to this time off schedule" has_assignments: Boolean! } "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! "Display name for this time off entry" name: String! "Type of the time off entry" type: TimeOffEntryKind "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 only if an internal error prevented identification" 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 "Type of the time off entry. Defaults to CUSTOM when omitted." type: TimeOffEntryKind "Start date of the non-working period in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" start: String! "End date of the non-working period in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" end: String! } "Type of a time off entry" enum TimeOffEntryKind { CUSTOM HOLIDAY } "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 } "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 } "Paginated list of time off schedules, each with all their entries" type TimesOffPage { "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 single allocation update operation" type UpdateAllocationResult { "Whether the operation succeeded" success: Boolean! "ID of the allocation that was updated (or attempted to update)" allocation_id: ID! "The updated allocation (null if operation failed)" allocation: Allocation "Error details if operation failed (null if succeeded)" error: Error } "Response indicating whether the directory attribute update succeeded" type UpdateDirectoryResourceAttributesResponse { "Indicates whether the batch update completed successfully." success: Boolean! } "Input for updating an existing PTO entry" input UpdatePtoEntryInput { "ID of the PTO entry to update" id: ID! "New start date in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" start: String "New end date in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" end: String } "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; must be within 1 year in the past and 20 years in the future" start: String "New end date in YYYY-MM-DD format; must be within 1 year in the past and 20 years in the future" 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 IDs" type UserAssignment { "ID of the user" user_id: ID! "ID of the work schedule assigned to this user" work_schedule_id: ID! "ID of the company time off schedule assigned to this user" company_time_off_id: ID! "Personal time off entries for this user" personal_time_offs: [PtoEntry!]! } "A user's personal time off collection with all its active PTO entries" type UserPto { "ID of the user this PTO collection belongs to" user_id: ID! "ID of the user's personal time off record; null if the user has no PTO collection yet" time_off_id: ID "All active PTO entries for this user" entries: [PtoEntry!]! } "Day of the week" enum WeekDay { SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY 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!]! "Whether any users are currently assigned to this work schedule" has_assignments: Boolean! } "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! } "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 } "List of work schedules" type WorkSchedules { "Work schedules" work_schedules: [WorkSchedule!]! } "Output format for connected items (Connect Boards) column values in CSV exports." enum ConnectedItemColumnFormat { NAME ID } "Reference to a started async board export. Use the job_id with fetch_export_job_status to poll until COMPLETED or FAILED." type ExportAsyncJob { "Opaque identifier for this export job. Pass to fetch_export_job_status." job_id: ID } "Result of a board export operation" type ExportBoardResult { "URL to download the exported Excel file" download_url: String "Expiration timestamp of the download URL" expires_at: String } "Structured reason an async export job failed." enum ExportFailureReason { BOARD_UNAVAILABLE BOARD_INACCESSIBLE ITEM_LIMIT_EXCEEDED INVALID_REQUEST NOT_FOUND INTERNAL_ERROR } "Output format for the exported board file." enum ExportFormat { XLSX CSV } "Lifecycle status of an async board export job. Polling clients should treat COMPLETED and FAILED as terminal." enum ExportJobStatus { RUNNING COMPLETED FAILED } "Status of an async board export job, including download URL when completed." type ExportJobStatusInfo { "Current job status. Terminal values: COMPLETED, FAILED." status: ExportJobStatus "Presigned S3 download URL, available only when status is COMPLETED and the export completed within the last hour. Returns null after 1 hour — re-trigger the export to get a new one." download_url: String "Structured reason for failure. Populated only when status is FAILED." failure_reason: ExportFailureReason "Human-readable error detail. Populated only when status is FAILED and the reason exposes safe text." failure_message: String } "Options for board export" input ExportOptionsInput { "Include subitems in the export" include_subitems: Boolean = false "Include updates/comments in the export" include_updates: Boolean = false "Header row format for CSV exports. Ignored for other formats." 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 """ Output format for people column values in CSV exports. When set to NAME, display names are used instead of IDs (e.g. "Alice Smith" instead of "user:123"). Ignored for non-CSV formats. """ people_column_format: PeopleColumnFormat "Output format for connected items (Connect Boards) column values in CSV exports. NAME (the default) uses the linked items' display names; ID uses their IDs instead. Ignored for non-CSV formats." connected_item_column_format: ConnectedItemColumnFormat = NAME } "CSV header row format." enum HeaderFormat { TITLE COLUMN_ID } "Handling for columns without a round-trippable codec in CSV mode." enum NonImportableColumns { INCLUDE SKIP ERROR } "Output format for people column values in CSV exports." enum PeopleColumnFormat { NAME } "Boolean compound query with must/should/must_not clauses" input BoolInput { "Minimum number of SHOULD clauses that must match" min_should_match: Int "Child clauses" clauses: [ClauseInput!]! } "A single search clause. Exactly one leaf or compound field must be set. occur and boost are optional modifiers used when this clause is a child of a bool or dis_max." input ClauseInput { "How this clause affects the parent score" occur: Occur "Score multiplier for this clause" boost: Float "Exact-term match on a field" term: FieldTextInput "Exact phrase match on a field" phrase: FieldTextInput "Phrase-prefix (autocomplete) match" phrase_prefix: FieldTextInput "Term-prefix match on a field" term_prefix: FieldTextInput "Wildcard pattern match (* and ?)" wildcard: FieldTextInput "Regular-expression match on a field" regex: FieldTextInput "Matches if the field equals ANY of the given values" terms_any: FieldTextListInput "Matches if the field equals ALL of the given values" terms_all: FieldTextListInput "Range match over a numeric or date field" range: RangeInput "Typo-tolerant fuzzy term match (Levenshtein)" fuzzy: FuzzyInput "Matches documents where the field has any indexed value" exists: FieldInput "When true, matches every document (equivalent to a match-all query)" all: Boolean "Boolean compound of sub-clauses (must / should / must_not)" bool: BoolInput "Disjunction-max compound — scores by the best-matching sub-clause" dis_max: DisMaxInput } "Disjunction-max query — scores by the best-matching child clause" input DisMaxInput { "Boost factor for non-best-matching clauses (0–1)" tie_breaker: Float "Child clauses" clauses: [ClauseInput!]! } "Checks that a field has at least one indexed value (exists query)" input FieldInput { "The indexed field that must have a value" field: SearchField! } "A field+value pair for term/phrase/regex style leaf queries" input FieldTextInput { "The indexed field to match against" field: SearchField! "The value to match" value: String! } "A field+values pair for terms_any / terms_all leaf queries" input FieldTextListInput { "The indexed field to match against" field: SearchField! "The list of values to match" values: [String!]! } "Fuzzy term query with edit-distance tolerance" input FuzzyInput { "The indexed field to match against" field: SearchField! "The value to fuzzily match" value: String! "Maximum edit distance (Levenshtein)" distance: Int! "Length of the common prefix that is not fuzzified" prefix_len: Int "Count transpositions as a single edit" transpositions: Boolean } "Boolean occurrence modifier for a clause inside a bool query" enum Occur { MUST SHOULD MUST_NOT } "Range query over a numeric or date field" input RangeInput { "The numeric or date field to range over" field: SearchField! "Lower bound (inclusive when include_min is true)" min: String "Upper bound (inclusive when include_max is true)" max: String "Whether the lower bound is inclusive (default false)" include_min: Boolean "Whether the upper bound is inclusive (default false)" include_max: Boolean } "Indexed fields available for structured search queries" enum SearchField { ITEM_NAME BOARD_ID UPDATED_AT ITEM_FREE_TEXT ITEM_STATUSES BOARD_NAME ITEMS_NUMERICS ITEMS_DATES WORKSPACE_ID BOARD_KIND PERSONS CREATED_BY LAST_UPDATED_BY BOARD_OWNER_ID BOARD_WITH_PULSE_VIEW_PERMISSIONS } "Result of assigning members to a department." type AssignDepartmentMembersResult { "The users that were successfully assigned to the department." successful_users: [User!] "The users that were not assigned to the department." failed_users: [User!] } "Result of assigning an owner to a department." type AssignDepartmentOwnerResult { "The user ID of the owner that was assigned to the department." owner: User } "Result of clearing users department." type ClearUsersDepartmentResult { "The users that their department was cleared." cleared_users: [User!] } "Data for creating a department." input CreateDepartmentDataInput { "The name of the department." name: String! "The number of reserved seats for the department." reserved_seats: Int } "A department in the account." type Department { "The department's ID." id: ID! "The department's name." name: String! "The number of seats reserved for the department." reserved_seats: Int! "The number of seats assigned to the department." assigned_seats: Int! "The members of the department" members: [User!] "The owners of the department" owners: [User!] } "Result of unassigning owners from a department." type UnassignDepartmentOwnerResult { "The user IDs of the owners that were unassigned from the department." unassigned_users: [User!] } "Options for updating a department." input UpdateDepartmentOptionsInput { "The new name of the department." name: String "The new number of reserved seats for the department." reserved_seats: Int } "A monday.com user." type User { "The user's unique identifier." id: ID! "The user's account." account: Account! "The products the user is assigned to." account_products: [AccountProduct!] "The user's birthday." birthday: Date "The user’s country code." country_code: String "The user's creation date." created_at: Date "The current user's language" current_language: String "The custom field metas of the user profile." custom_field_metas: [CustomFieldMetas] "The custom field values of the user profile." custom_field_values: [CustomFieldValue] "The user's email." email: String! "Is the user enabled or not." enabled: Boolean! @deprecated(reason: "This field is deprecated. Please use status instead.") "The token of the user for email to board." encrypt_api_token: String @deprecated(reason: "This field is deprecated and will be removed in later versions.") "Is the user an account admin." is_admin: Boolean @deprecated(reason: "This field is deprecated. Please use kind instead.") "Is the user a guest or not." is_guest: Boolean @deprecated(reason: "This field is deprecated. Please use kind instead.") "Is the user a pending user" is_pending: Boolean @deprecated(reason: "This field is deprecated. Please use status instead.") "Is user verified his email." is_verified: Boolean @deprecated(reason: "This field is deprecated. Please use is_email_confirmed instead.") "Is the user a view only user or not." is_view_only: Boolean @deprecated(reason: "This field is deprecated. Please use kind instead.") "The date the user joined the account." join_date: Date @deprecated(reason: "This field is deprecated. Please use became_active_at instead.") "Last date & time when user was active" last_activity: Date "The user’s location." location: String "The user's mobile phone number." mobile_phone: String "The user's name." name: String! "The user's out of office status." out_of_office: OutOfOffice "The user's phone number." phone: String "The user's photo in the original size." photo_original: String @deprecated(reason: "This field is deprecated. Please use photo_url.original instead.") "The user's photo in small size (150x150)." photo_small: String @deprecated(reason: "This field is deprecated. Please use photo_url.small instead.") "The user's photo in thumbnail size (100x100)." photo_thumb: String @deprecated(reason: "This field is deprecated. Please use photo_url.thumb instead.") "The user's photo in small thumbnail size (50x50)." photo_thumb_small: String @deprecated(reason: "This field is deprecated. Please use photo_url.thumb_small instead.") "The user's photo in tiny size (30x30)." photo_tiny: String @deprecated(reason: "This field is deprecated. Please use photo_url.tiny instead.") "The product to which the user signed up to first." sign_up_product_kind: String @deprecated(reason: "This field is deprecated and will be removed in later versions.") "The teams the user is a member in." teams( "A list of teams unique identifiers." ids: [ID!]): [Team] "The user’s timezone identifier." time_zone_identifier: String "The user's title." title: String "The user's profile url." url: String! "The user’s utc hours difference." utc_hours_diff: Int } "Result of enhancing a board with AI columns." type BoardEnhancementResult { "The ID of the board that was enhanced." board_id: ID "The result of the AI column enhancement." result: ConvertColumnsToAiResult } "Result of enhancing columns with AI." type ConvertColumnsToAiResult { "Whether the conversion succeeded." succeeded: Boolean "List of column IDs that were converted to AI columns." converted_column_ids: [ID!] "List of column IDs that were added as new AI columns." added_column_ids: [ID!] } "Your monday.com account" type Account { "The number of active member users in the account" active_members_count: Int "The account's country two-letter code in ISO3166 format" country_code: String "The first day of the week for the account (sunday / monday)" first_day_of_the_week: FirstDayOfTheWeek! "The account's unique identifier." id: ID! "The account's logo." logo: String "The account's name." name: String! "The account's payment plan." plan: Plan "The account's active products" products: [AccountProduct] "Show weekends in timeline" show_timeline_weekends: Boolean! "The product the account signed up to first." sign_up_product_kind: String "The account's slug." slug: String! "The account's tier." tier: String } "The product a workspace is used in." type AccountProduct { "The account product default workspace id" default_workspace_id: ID "The account product id" id: ID """ The account product kind (core / marketing / crm / software / projectManagement / project_management / service / forms / whiteboard). """ kind: String } "An activity log event" type ActivityLogType { account_id: String! created_at: String! "The item's column values in string form." data: String! entity: String! event: String! id: String! user_id: String! } "An app install details." type AppInstall { "The app's unique identifier." app_id: ID! "An app installer's account details." app_install_account: AppInstallAccount! "An app installer's user details" app_install_user: AppInstallUser! "The app's version details" app_version: AppVersion "The required and approved scopes for an app install." permissions: AppInstallPermissions "Installation date" timestamp: String } "An app installer's account details" type AppInstallAccount { "The app's installer account id." id: ID! } "The required and approved scopes for an app install." type AppInstallPermissions { "The scopes approved by the account admin" approved_scopes: [String!]! "The scopes required by the latest live version" required_scopes: [String!]! } "An app installer's user details" type AppInstallUser { "The app's installer user id." id: ID } "The app monetization status for the current account" type AppMonetizationStatus { "Is apps monetization is supported for the account" is_supported: Boolean! } "The account subscription details for the app." type AppSubscription { "The type of the billing period [monthly/yearly]." billing_period: String "The number of days left until the subscription ends." days_left: Int "Is the subscription a trial" is_trial: Boolean "Maximum number of units for current subscription plan." max_units: Int "The subscription plan id (on the app's side)." plan_id: String! "The pricing version of subscription plan." pricing_version: Int "The subscription renewal date." renewal_date: Date! } "The Operations counter response for the app action." type AppSubscriptionOperationsCounter { "The account subscription details for the app." app_subscription: AppSubscription "The new counter value." counter_value: Int "Operations name." kind: String! "Window key." period_key: String } "An app's version details." type AppVersion { "The app's major version." major: Int! "The app's minor version." minor: Int! "The app's patch version." patch: Int! "The app's version text" text: String! "The app's version type." type: String } "The app monetization information for the current account" type AppsMonetizationInfo { """ The number of seats in the account, across all products, used to match the app’s subscription among apps that utilize the seats-based monetization method """ seats_count: Int } "A file uploaded to monday.com" type Asset { "The file's creation date." created_at: Date "The file's extension." file_extension: String! "The file's size in bytes." file_size: Int! "The file's unique identifier." id: ID! "The file's name." name: String! "original geometry of the asset." original_geometry: String "public url to the asset, valid for 1 hour." public_url: String! "The user who uploaded the file." uploaded_by: User! "url to view the asset." url: String! "url to view the asset in thumbnail mode. Only available for images." url_thumbnail: String } "The source of the asset" enum AssetsSource { all columns gallery } "Result of an batch operation" type BatchExtendTrialPeriod { "Details of operations" details: [ExtendTrialPeriod!] "Reason of an error" reason: String "Result of a batch operation" success: Boolean! } "The result of a batch undo operation." type BatchUndoResult { "Whether the undo operation completed successfully." success: Boolean! } "A battery value item representing a status count" type BatteryValueItem { "The count for this status" count: Int! "The status index key" key: ID! } "A monday.com board." type Board { "The board log events." activity_logs( "Column ids to filter" column_ids: [String], "From timestamp (ISO8601)" from: ISO8601DateTime, "Group ids to filter" group_ids: [String], "Item id to filter" item_ids: [ID!], "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1, "To timestamp (ISO8601)" to: ISO8601DateTime, "User ids to filter." user_ids: [ID!]): [ActivityLogType] "The board's folder unique identifier." board_folder_id: ID "The board's kind (public / private / share)." board_kind: BoardKind! "The board's visible columns." columns( "A list of column unique identifiers." ids: [String], "A list of column types." types: [ColumnType!]): [Column] "The board's columns namespace." columns_namespace: String "Get the board communication value - typically meeting ID" communication: JSON "The creator of the board." creator: User! "The board's description." description: String "The board's visible groups." groups( "A list of group unique identifiers." ids: [String]): [Group] "The unique identifier of the board." id: ID! "The Board's item nickname, one of a predefined set of values, or a custom user value" item_terminology: String "The number of items on the board" items_count: Int "The maximum number of items this board can have" items_limit: Int "The board's items (rows)." items_page( """ An opaque token representing the position in the result set from which to resume fetching items. Use this to paginate through large result sets. """ cursor: String, """ The maximum number of items to fetch in a single request. Use this to control the size of the result set and manage pagination. Maximum: 500. """ limit: Int! = 25, """ A set of parameters to filter, sort, and control the scope of the items query. Use this to customize the results based on specific criteria. """ query_params: ItemsQuery): ItemsResponse! "The board's name." name: String! "The owner of the board." owner: User! @deprecated(reason: "This field returned creator of the board. Please use 'creator' or 'owners' fields instead.") "List of user board owners" owners: [User]! "The board's permissions." permissions: String! "The board's state (all / active / archived / deleted)." state: State! "The board's subscribers." subscribers: [User]! "The board's specific tags." tags: [Tag] "List of team board owners" team_owners( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [Team!] "The board's team subscribers." team_subscribers( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [Team!] "The top group at this board." top_group: Group! "The board object type." type: BoardObjectType "The last time the board was updated at." updated_at: ISO8601DateTime "The Board's url" url: String! "The board's views." views( "A list of view unique identifiers." ids: [ID!], "The view's type" type: String): [BoardView] "The workspace that contains this board (null for main workspace)." workspace: Workspace "The board's workspace unique identifier (null for main workspace)." workspace_id: ID "The board's updates." updates( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1, "A list of items unique identifiers." ids: [ID!]): [Update!] } "The board access level of the user" enum BoardAccessLevel { edit view } "The board attributes available." enum BoardAttributes { communication description name } "Basic role names for board permissions. Each role grants different levels of access to the board." enum BoardBasicRoleName { assigned_contributor contributor editor viewer } "A board duplication" type BoardDuplication { "The new board created by the duplication" board: Board! "Was the board duplication performed asynchronously" is_async: Boolean! } "Edit permissions level for boards." enum BoardEditPermissions { assignee collaborators everyone owners } "The board hierarchy type" enum BoardHierarchy { classic multi_level } "Maps a source board ID to the newly created board ID produced by a template installation." type BoardIdMapping { "The newly created board ID." created_board_id: ID! "The source (template) board ID." source_board_id: ID! } "The board kinds available." enum BoardKind { private public share } "The board object types." enum BoardObjectType { board custom_object document sub_items_board } "The board subscriber kind." enum BoardSubscriberKind { owner subscriber } "A board's view." type BoardView { "The view's unique identifier." id: ID! "The view's name." name: String! "The view's settings in a string form." settings_str: String! "The view's template id if it was duplicated from other view" source_view_id: ID "The view's type." type: String! "Specific board view data (supported only for forms)" view_specific_data_str: String! } "The board view access level of the user" enum BoardViewAccessLevel { edit view } "View permissions level for boards." enum BoardViewPermissions { any_assignee_column } "The available board view types." enum BoardViewTypeValues { CalendarBoardView DocBoardView EmptyBoardView FormBoardView TableBoardView } "Options to order by." enum BoardsOrderBy { created_at used_at } "Input for configuring calculated capability settings on a column" input CalculatedCapabilityInput { "Function to calculate the values. If not provided, will use the default function for the column type." function: CalculatedFunction! } "Available functions for calculating values in column capabilities" enum CalculatedFunction { COUNT_KEYS MAX MIN MIN_MAX NONE SUM } "The result of adding users to / removing users from a team." type ChangeTeamMembershipsResult { "The users that team membership update failed for" failed_users: [User!] "The users that team membership update succeeded for" successful_users: [User!] } type Column { "Is the column archived or not." archived: Boolean! "The column's description." description: String "The unique identifier of the column." id: ID! "The column's settings in a string form." settings_str: String! "The column's title." title: String! "The column's type." type: ColumnType! "The column's width." width: Int } "Input for configuring column capabilities during creation" input ColumnCapabilitiesInput { "Calculated capability settings. If provided, enables calculated functionality for the column." calculated: CalculatedCapabilityInput } "Capabilities supported by the API" enum ColumnCapability { CALCULATED VISIBILITY } "An object defining a mapping of column between source board and destination board" input ColumnMappingInput { "The source column's unique identifier." source: ID! "The target column's unique identifier." target: ID } "The property name of the column to be changed." enum ColumnProperty { description title } "Types of columns supported by the API" enum ColumnType { auto_number board_relation button checkbox color_picker country creation_log date dependency direct_doc doc dropdown email file formula group hour integration item_assignees item_id last_updated link location long_text mirror name numbers people person phone progress rating status subtasks tags team text time_tracking timeline unsupported vote week world_clock } interface ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } "Complexity data." type Complexity { "The remainder of complexity after the query's execution." after: Int! "The remainder of complexity before the query's execution." before: Int! "The specific query's complexity." query: Int! "How long in seconds before the complexity budget is reset" reset_in_x_seconds: Int! } type Country { "The country's two-letter code." code: String! "The country's name." name: String! } input CreateDocBoardInput { "Column id" column_id: String! "Item id" item_id: ID! } input CreateDocInput { board: CreateDocBoardInput workspace: CreateDocWorkspaceInput } input CreateDocWorkspaceInput { "Optional board folder id" folder_id: ID "The doc's kind (public / private / share)" kind: BoardKind "The doc's name" name: String! "Workspace id" workspace_id: ID! } "The custom fields meta data for user profile." type CustomFieldMetas { "The custom field meta's description." description: String "Is the custom field meta editable or not." editable: Boolean "The custom field meta's type." field_type: String "Is the custom field meta flagged or not." flagged: Boolean "The custom field meta's icon." icon: String "The custom field meta's unique identifier." id: String "The custom field meta's position in the user profile page." position: String "The custom field meta's title." title: String } "A custom field value for user profile." type CustomFieldValue { "The custom field value's meta unique identifier." custom_field_meta_id: String "The custom field value." value: String } "Represents a dependency link between two items, including the relationship type and lag." type DependencyLink { "The dependency relationship type (0=FS, 1=SS, 2=FF, 3=SF)." dependency_type: Int "The lag in days between the dependent items." lag: Int "The ID of the linked dependent item." linked_item_id: ID! } "Various documents blocks types, such as text." enum DocBlockContentType { bulleted_list check_list code divider image large_title layout medium_title normal_text notice_box numbered_list page_break quote small_title table video } "Options to order by." enum DocsOrderBy { created_at used_at } """ Represents a monday.com doc - a rich-text page built from editable blocks (text, files, embeds, etc.). A doc can belong to: (1) a workspace (left-pane doc), (2) an item (doc on column), (3) a board view (doc as a board view). """ type Document { "The document's content blocks" blocks( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [DocumentBlock] "The document's creation date." created_at: Date "The document's creator" created_by: User "The document's folder unique identifier (null for first level)." doc_folder_id: ID "The document's kind (public / private / share)." doc_kind: BoardKind! """ Unique document ID returned when the doc is created. Use this ID in every API call that references the doc. How to find it: • Call the docs() GraphQL query with object_ids to map object_id → id • Enable 'Developer Mode' in monday.labs to display it inside the doc. """ id: ID! "The document's name." name: String! """ Identifier that appears in the doc's URL. Returned on creation, but DO NOT use it in API routes that expect a document ID. """ object_id: ID! "The document's relative url" relative_url: String "The document's settings." settings: JSON "The document's last updated date." updated_at: Date "The document's direct url" url: String "The workspace that contains this document (null for main workspace)." workspace: Workspace "The document's workspace unique identifier (null for main workspace)." workspace_id: ID } "A monday.com document block." type DocumentBlock { "The block's content." content: JSON "The block's creation date." created_at: Date "The block's creator" created_by: User "The block's document unique identifier." doc_id: ID "The block's unique identifier." id: String! "The block's parent block unique identifier." parent_block_id: String "The block's position on the document." position: Float "The block content type." type: String "The block's last updated date." updated_at: Date } "A monday.com doc block." type DocumentBlockIdOnly { "The block's unique identifier." id: String! } type DropdownValueOption { "The dropdown item's unique identifier." id: ID! "The dropdown item's label." label: String! } "The board duplicate types available." enum DuplicateBoardType { duplicate_board_with_pulses duplicate_board_with_pulses_and_updates duplicate_board_with_structure } input DynamicPosition { """ A boolean flag indicating the desired position of the target item: set to true to place the item after the reference object, or false to place it before. """ is_after: Boolean = true "The unique identifier of the reference object relative to which the target item will be positioned." object_id: String! """ The type or category of the reference object, used to determine how the target item should be positioned in relation to it. """ object_type: ObjectType! } "Result of a single operation" type ExtendTrialPeriod { "Account slug" account_slug: String! "Reason of an error" reason: String "Result of a single operation" success: Boolean! } "Information about a failed user board role update, including the user ID and the error encountered." type FailedUserBoardRoleUpdate { "The error message describing why the role update failed." error: String! "The ID of the user whose board role update failed." user_id: ID! } "A file with an invalid or missing asset." type FileAssetInvalidValue { "The asset's id." asset_id: ID! "The file's creation date." created_at: Date! "The user who created the file." creator: User "The ID of user who created the file." creator_id: ID "The error message." error: String! "The file's name." name: String } type FileAssetValue { "The asset associated with the file." asset: Asset! "The asset's id." asset_id: ID! "The file's creation date." created_at: Date! "The user who created the file." creator: User "The ID of user who created the file." creator_id: ID "Whether the file is an image." is_image: Boolean! "The file's name." name: String! } "The type of a link value stored inside a file column" enum FileColumnValue { asset box doc dropbox google_drive link onedrive } type FileDocValue { "The file's creation date." created_at: Date! "The user who created the file." creator: User "The ID of user who created the file." creator_id: ID "The doc associated with the file." doc: Document! "The file's unique identifier." file_id: ID! "The associated board or object's unique identifier." object_id: ID! "The file's url." url: String } input FileInput { "The asset's id." assetId: ID "File kind" fileType: FileColumnValue! "File link" linkToFile: String "File display name" name: String! "The doc's id" objectId: ID } type FileLinkValue { "The file's creation date." created_at: Date! "The user who created the file." creator: User "The ID of user who created the file." creator_id: ID "The file's id." file_id: ID! "The file's kind." kind: FileLinkValueKind! "The file's name." name: String! "The file's url." url: String } "The type of a link value stored inside a file column" enum FileLinkValueKind { box dropbox google_drive link onedrive } "A single file in a column." union FileValueItem = FileAssetInvalidValue | FileAssetValue | FileDocValue | FileLinkValue "The first day of work week" enum FirstDayOfTheWeek { monday sunday } "A workspace folder containing boards, docs, sub folders, etc." type Folder { "The various items in the folder, not including sub-folders and dashboards." children: [Board]! "The folder's color." color: FolderColor "The folder's creation date." created_at: Date! "The folder's custom icon." custom_icon: FolderCustomIcon "The folder's font weight." font_weight: FolderFontWeight "The folder's unique identifier." id: ID! "The folder's name." name: String! "The folder's user owner unique identifier." owner_id: ID "The folder's parent folder." parent: Folder "Sub-folders inside this folder." sub_folders: [Folder]! "The workspace that contains this folder (null id for main workspace)." workspace: Workspace! } "One value out of a list of valid folder colors" enum FolderColor { AQUAMARINE BRIGHT_BLUE BRIGHT_GREEN CHILI_BLUE DARK_ORANGE DARK_PURPLE DARK_RED DONE_GREEN INDIGO LIPSTICK NULL PURPLE SOFIA_PINK STUCK_RED SUNSET WORKING_ORANGE } "One value out of a list of valid folder custom icons" enum FolderCustomIcon { FOLDER MOREBELOW MOREBELOWFILLED NULL WORK } "One value out of a list of valid folder font weights" enum FolderFontWeight { FONT_WEIGHT_BOLD FONT_WEIGHT_LIGHT FONT_WEIGHT_NORMAL FONT_WEIGHT_VERY_LIGHT NULL } "A group of items in a board." type Group { "Is the group archived or not." archived: Boolean "The group's color." color: String! "Is the group deleted or not." deleted: Boolean "The group's unique identifier." id: ID! "The items in the group." items_page( """ An opaque token representing the position in the result set from which to resume fetching items. Use this to paginate through large result sets. """ cursor: String, """ The maximum number of items to fetch in a single request. Use this to control the size of the result set and manage pagination. Maximum: 500. """ limit: Int! = 25, """ A set of parameters to filter, sort, and control the scope of the items query. Use this to customize the results based on specific criteria. """ query_params: ItemsQuery): ItemsResponse! "The group's position in the board." position: String! "The group's title." title: String! } "The group attributes available." enum GroupAttributes { color position relative_position_after relative_position_before title } "An item (table row)." type Item { "The item's assets/files." assets( "The assets source (all / columns / gallery)" assets_source: AssetsSource, "Ids of the columns you want to get assets from." column_ids: [String]): [Asset] "The board that contains this item." board: Board "The item's column values." column_values( "A list of column ids to return" ids: [String!], "A list of column types to return" types: [ColumnType!]): [ColumnValue!]! "The item's create date." created_at: Date "The item's creator." creator: User "The unique identifier of the item creator." creator_id: String! "The item's email." email: String! "The group that contains this item." group: Group "The item's unique identifier." id: ID! "The item's linked items" linked_items( "The id of the link to item column" link_to_item_column_id: String!, "The id of the linked board" linked_board_id: ID!): [Item!]! "The item's name." name: String! "The parent item of a subitem." parent_item: Item "The item's relative path" relative_link: String "The item's state (all / active / archived / deleted)." state: State "The item's subitems." subitems: [Item] "The pulses's subscribers." subscribers: [User]! "The item's last update date." updated_at: Date "The item's link" url: String! "The item's updates." updates( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1, "A list of items unique identifiers." ids: [ID!]): [Update!] } "An item description." type ItemDescription { "The item's content blocks" blocks( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [DocumentBlock] "The item's unique identifier." id: ID } "Input type for item nickname configuration" input ItemNicknameInput { "The plural form of the item nickname" plural: String "The preset type for item nickname" preset_type: String "The singular form of the item nickname" singular: String } input ItemsPageByColumnValuesQuery { "The column's unique identifier." column_id: String! "The column values to search items by." column_values: [String]! } type ItemsResponse { """ An opaque cursor that represents the position in the list after the last returned item. Use this cursor for pagination to fetch the next set of items. If the cursor is null, there are no more items to fetch. """ cursor: String "The items associated with the cursor." items: [Item!]! } "Kind of assignee" enum Kind { person team } type MirroredItem { "The linked board." linked_board: Board! "The linked board's unique identifier." linked_board_id: ID! "The linked item." linked_item: Item! "The mirrored values." mirrored_value: MirroredValue } "Represents a mirrored value (column value, group, or board)." union MirroredValue = BatteryValue | Board | BoardRelationValue | ButtonValue | CheckboxValue | ColorPickerValue | CountryValue | CreationLogValue | DateValue | DependencyValue | DirectDocValue | DocValue | DropdownValue | EmailValue | FileValue | FormulaValue | Group | GroupValue | HourValue | IntegrationValue | ItemIdValue | LastUpdatedValue | LinkValue | LocationValue | LongTextValue | MirrorValue | NumbersValue | PeopleValue | PersonValue | PhoneValue | ProgressValue | RatingValue | StatusValue | SubtasksValue | TagsValue | TeamValue | TextValue | TimeTrackingValue | TimelineValue | UnsupportedValue | VoteValue | WeekValue | WorldClockValue "Root mutation type for the Dependencies service" type Mutation { "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." file: File!, "The item to add the file to." item_id: ID!): Asset "Add a file to an update." add_file_to_update( "The file to upload." file: File!, "The update to add the file to." update_id: ID!): Asset "Add subscribers to a board." add_subscribers_to_board( "The board's unique identifier." board_id: ID!, "Subscribers kind (subscriber / owner)" kind: BoardSubscriberKind = subscriber, "User ids to subscribe to a board" user_ids: [ID!]!): [User] @deprecated(reason: "use add_users_to_board instead") "Add teams subscribers to a board." add_teams_to_board( "The board's unique identifier." board_id: ID!, "Subscribers kind (subscriber / owner)" kind: BoardSubscriberKind = subscriber, "Team ids to subscribe to a board" team_ids: [ID!]!): [Team] "Add teams to a workspace." add_teams_to_workspace( "Subscribers kind (subscriber / owner)" kind: WorkspaceSubscriberKind = subscriber, "Team ids to subscribe to a workspace" team_ids: [ID!]!, "The workspace's unique identifier." workspace_id: ID!): [Team] "Add subscribers to a board." add_users_to_board( "The board's unique identifier." board_id: ID!, "Subscribers kind (subscriber / owner)" kind: BoardSubscriberKind = subscriber, "User ids to subscribe to a board" user_ids: [ID!]!): [User] "Add users to team." add_users_to_team( "The team's unique identifier." team_id: ID!, "User ids to add to/remove from the team" user_ids: [ID!]!): ChangeTeamMembershipsResult "Add users to a workspace." add_users_to_workspace( "Subscribers kind (subscriber / owner)" kind: WorkspaceSubscriberKind = subscriber, "User ids to subscribe to a workspace" user_ids: [ID!]!, "The workspace's unique identifier." workspace_id: ID!): [User] "Archive a board." archive_board( "The board's unique identifier" board_id: ID!): Board "Archives a group in a specific board." archive_group( "The board's unique identifier." board_id: ID!, "The group's unique identifier." group_id: String!): Group "Archive an item." archive_item( "The item's unique identifier." item_id: ID): Item "Extends trial period of an application to selected accounts" batch_extend_trial_period( "The accounts' slags. Max: 5" account_slugs: [String!]!, "The id of an application." app_id: ID!, "The amount of days to extend a trial period. Max: 365" duration_in_days: Int!, "The id of a payment plan." plan_id: String!): BatchExtendTrialPeriod "Change a column's properties" change_column_metadata( "The board's unique identifier." board_id: ID!, "The column's unique identifier." column_id: String!, "The property name of the column to be changed (title / description)." column_property: ColumnProperty, "The new description of the column." value: String): Column "Change a column's title" change_column_title( "The board's unique identifier." board_id: ID!, "The column's unique identifier." column_id: String!, "The new title of the column." title: String!): Column "Change an item's column value." change_column_value( "The board's unique identifier." board_id: ID!, "The column's unique identifier." column_id: String!, "Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)" create_labels_if_missing: Boolean, "The item's unique identifier." item_id: ID, "The new value of the column." value: JSON!): Item "Changes the column values of a specific item." change_multiple_column_values( "The board's unique identifier." board_id: ID!, "The column values updates." column_values: JSON!, "Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)" create_labels_if_missing: Boolean, "The item's unique identifier." item_id: ID): Item "Change an item's column with simple value." change_simple_column_value( "The board's unique identifier." board_id: ID!, "The column's unique identifier." column_id: String!, "Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)" create_labels_if_missing: Boolean, "The item's unique identifier." item_id: ID, "The new simple value of the column (pass null to empty the column)." value: String): Item "Clear an item's updates." clear_item_updates( "The item's unique identifier." item_id: ID!): Item "Get the complexity data of your mutations." complexity: Complexity "Create a new board." create_board( "The board's kind (public / private / share)" board_kind: BoardKind!, "The board's name" board_name: String!, "Optional board owner user ids" board_owner_ids: [ID!], "Optional board owner team ids" board_owner_team_ids: [ID!], "Optional board subscriber ids" board_subscriber_ids: [ID!], "Optional list of subscriber team ids" board_subscriber_teams_ids: [ID!], "Optional board's description" description: String, "Optional flag to create an empty board (without any default items)" empty: Boolean = false, "Optional board folder id" folder_id: ID, "Optional board template id" template_id: ID, "Optional workspace id" workspace_id: ID): Board "Create a new column in board." create_column( "The column's unique identifier after which the new column will be inserted." after_column_id: ID, "The board's unique identifier." board_id: ID!, "The type of column to create." column_type: ColumnType!, "The new column's defaults." defaults: JSON, "The new column's description." description: String, "The column's user-specified unique identifier." id: String, "The new column's title." title: String!): Column "Create a new doc." create_doc( "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." content: JSON!, "The doc's unique identifier." doc_id: ID!, "The parent block id to append the created block under." parent_block_id: String, "The block's content type." type: DocBlockContentType!): DocumentBlock "Creates a folder in a specific workspace." create_folder( "The folder's color." color: FolderColor, "The folder's custom icon." custom_icon: FolderCustomIcon, "The folder's font weight." font_weight: FolderFontWeight, "The folder's name" name: String!, "The folder's parent folder unique identifier." parent_folder_id: ID, "The unique identifier of the workspace to create this folder in" workspace_id: ID): Folder "Creates a new group in a specific board." create_group( "The board's unique identifier." board_id: ID!, "A hex representing the group's color" group_color: String, "The name of the new group." group_name: String!, "The group's position in the board. DEPRECATED! Replaced with relative position (position_relative_method, relative_to)" position: String, "The position relative method to another group (before_at / after_at)" position_relative_method: PositionRelative, "The group to set the position next to." relative_to: String): Group "Create a new item." create_item( "The board's unique identifier." board_id: ID!, "The column values of the new item." column_values: JSON, "Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)" create_labels_if_missing: Boolean, "The group's unique identifier." group_id: String, "The new item's name." item_name: String!, "The position relative method to another item (before_at / after_at)" position_relative_method: PositionRelative, "The item to set the position next to." relative_to: ID): Item "Create a new notification." create_notification( "The target's unique identifier." target_id: ID!, "The target's type (Project / Post)" target_type: NotificationTargetType!, "The notification text." text: String!, "The user's unique identifier." user_id: ID!): Notification "Create a new tag or get it if it already exists." create_or_get_tag( "The private board id to create the tag at (not needed for public boards)" board_id: ID, "The new tag's name." tag_name: String): Tag "Create subitem." create_subitem( "The column values of the new item." column_values: JSON, "Create Status/Dropdown labels if they're missing. (Requires permission to change board structure)" create_labels_if_missing: Boolean, "The new item's name." item_name: String!, "The parent item's unique identifier." parent_item_id: ID!): Item "Create a new webhook." create_webhook( "The board's unique identifier." board_id: ID!, "The webhook config" config: JSON, "The event to listen to" event: WebhookEventType!, "The webhook URL." url: String!): Webhook "Create a new workspace." create_workspace( "The account product's id" account_product_id: ID, "The Workspace's description" description: String, "The workspace's kind (open / closed / template)" kind: WorkspaceKind!, "The Workspace's name" name: String!): Workspace "Delete a board." delete_board( "The board's unique identifier" board_id: ID!): Board "Delete a column." delete_column( "The board's unique identifier." board_id: ID!, "The column's unique identifier." column_id: String!): Column "Delete a document block" delete_doc_block( "The block's unique identifier." block_id: String!): DocumentBlockIdOnly "Deletes a folder in a specific workspace." delete_folder( "The folder's unique identifier." folder_id: ID!): Folder "Deletes a group in a specific board." delete_group( "The board's unique identifier." board_id: ID!, "The group's unique identifier." group_id: String!): Group "Delete an item." delete_item( "The item's unique identifier." item_id: ID): Item "Remove subscribers from the board." delete_subscribers_from_board( "The board's unique identifier." board_id: ID!, "User ids to unsubscribe from a board" user_ids: [ID!]!): [User] "Remove team subscribers from the board." delete_teams_from_board( "The board's unique identifier" board_id: ID!, "Team ids to unsubscribe from a workspace" team_ids: [ID!]!): [Team] "Delete teams from a workspace." delete_teams_from_workspace( "Team ids to unsubscribe from a workspace" team_ids: [ID!]!, "The workspace's unique identifier." workspace_id: ID!): [Team] "Delete users from a workspace." delete_users_from_workspace( "User ids to unsubscribe from a workspace" user_ids: [ID!]!, "The workspace's unique identifier." workspace_id: ID!): [User] "Delete a new webhook." delete_webhook( "The webhook's unique identifier." id: ID!): Webhook "Delete workspace." delete_workspace( "The workspace's unique identifier" workspace_id: ID!): Workspace "Duplicate a board." duplicate_board( "The board's unique identifier." board_id: ID!, "Optional the new board's name. If omitted then automatically generated" board_name: String, "The duplication type." duplicate_type: DuplicateBoardType!, "Optional destination folder in destination workspace. Defaults to the original board folder." folder_id: ID, "Duplicate the subscribers to the new board. Defaults to false." keep_subscribers: Boolean, "Optional destination workspace. Defaults to the original board workspace." workspace_id: ID): BoardDuplication "Duplicate a group." duplicate_group( "Should the new group be added to the top." add_to_top: Boolean, "The board's unique identifier." board_id: ID!, "The group's unique identifier." group_id: String!, "The group's title." group_title: String): Group "Duplicate an item." duplicate_item( "The board's unique identifier." board_id: ID!, "The item's unique identifier. *Required" item_id: ID, "Duplicate with the item's updates." with_updates: Boolean): Item "Increase operations counter" increase_app_subscription_operations( "Must be positive number." increment_by: Int = 1, "Operation name. A string of up to 14 characters containing alphanumeric characters and the symbols -_" kind: String = "global"): AppSubscriptionOperationsCounter "Move an item to a different board." move_item_to_board( "The unique identifier of a target board." board_id: ID!, "Mapping of columns between the original board and target board" columns_mapping: [ColumnMappingInput!], "The unique identifier of a target group." group_id: ID!, "The unique identifier of an item to move." item_id: ID!, "Mapping of subitem columns between the original board and target board" subitems_columns_mapping: [ColumnMappingInput!]): Item "Move an item to a different group." move_item_to_group( "The group's unique identifier." group_id: String!, "The item's unique identifier." item_id: ID): Item "Remove mock app subscription for the current account" remove_mock_app_subscription( "The app id of the app to remove the mocked subscription for." app_id: ID!, "The last 10 characters of the app's signing secret." partial_signing_secret: String!): AppSubscription "Remove users from team." remove_users_from_team( "The team's unique identifier." team_id: ID!, "User ids to add to/remove from the team" user_ids: [ID!]!): ChangeTeamMembershipsResult "Set mock app subscription for the current account" set_mock_app_subscription( "The app id of the app to mock subscription for." app_id: ID!, "Billing period [monthly/yearly]" billing_period: String, "Is the subscription a trial" is_trial: Boolean, "Maximum number of units for the mocked plan" max_units: Int, "The last 10 characters of the app's signing secret." partial_signing_secret: String!, "The plan id for the mocked plan" plan_id: String, "Pricing plans version" pricing_version: Int, "The subscription renewal date" renewal_date: Date): AppSubscription "Update item column value by existing assets" update_assets_on_item( "The board's unique identifier." board_id: ID!, "The column's unique identifier." column_id: String!, "Array of files values." files: [FileInput!]!, "The item's unique identifier." item_id: ID!): Item "Update Board attribute." update_board( "The board's attribute to update (name / description / communication / item_nickname)" board_attribute: BoardAttributes!, "The board's unique identifier" board_id: ID!, "The new attribute value." new_value: String!): JSON "Update a document block" update_doc_block( "The block's unique identifier." block_id: String!, "The block's content." content: JSON!): DocumentBlock "Updates a folder." update_folder( "The folder's color." color: FolderColor, "The folder's custom icon." custom_icon: FolderCustomIcon, "The folder's unique identifier" folder_id: ID!, "The folder's font weight." font_weight: FolderFontWeight, "The folder's name" name: String, "The folder's parent folder." parent_folder_id: ID): Folder "Update an existing group." update_group( "The board's unique identifier." board_id: ID!, "The groups's attribute to update (title / color / position / relative_position_after / relative_position_before)" group_attribute: GroupAttributes!, "The Group's unique identifier." group_id: String!, "The new attribute value." new_value: String!): Group "Update an existing workspace." update_workspace( "The attributes of the workspace to update" attributes: UpdateWorkspaceAttributesInput!, "The workspace ID." id: ID): Workspace "Use a template" use_template( "The board's kind (public / private / share)" board_kind: BoardKind, "Optional board owner user ids" board_owner_ids: [Int], "Optional board owner team ids" board_owner_team_ids: [Int], "Optional board subscriber ids" board_subscriber_ids: [Int], "Optional list of subscriber team ids" board_subscriber_teams_ids: [Int], "The callback URL to send the workspace, boards and dashboards IDs result, after its completed in the background" callback_url_on_complete: String, "The folder ID to duplicate the template to." destination_folder_id: Int, "The folder name to duplicate the template to, in case of multiple boards template" destination_folder_name: String, "The name of the instance" destination_name: String, "The workspace ID to duplicate the template to, If not defined, it will be created in Main Workspace" destination_workspace_id: Int, "Skips target folder creation in multiple entities templates" skip_target_folder_creation: Boolean, "Optional adding extra options" solution_extra_options: JSON, "The template ID" template_id: Int!): Template "Converts document content into standard markdown format for external use, backup, or processing. Exports the entire document by default, or specific blocks if block IDs are provided. Use this to extract content for integration with other systems, create backups, generate reports, or process document content with external tools. The output is clean, portable markdown that preserves formatting and structure." export_markdown_from_doc( "The document's unique identifier to export. Get this from document queries or creation responses." docId: ID!, "Optional array of specific block IDs to export. If omitted, exports the entire document. Use when you only need specific sections." blockIds: [String!]): ExportMarkdownResult @deprecated(reason: "Please use the query export_markdown_from_doc instead.") "Updates the content of a specific article block. The block must belong to a draft article that the user has permission to edit. Cannot update blocks of published articles." update_article_block( "The ID of the block to update" block_id: String!, "The new content for the block" content: JSON!): ArticleBlock "Creates a new team." create_team(input: CreateTeamAttributesInput!, options: CreateTeamOptionsInput): Team "Activates the specified users." activate_users( "The ids of the users to activate. (Limit: 200)" user_ids: [ID!]!): ActivateUsersResult "Deactivates the specified users." deactivate_users( "The ids of the users to deactivate. (Limit: 200)" user_ids: [ID!]!): DeactivateUsersResult "Deletes the specified team." delete_team( "The team to be deleted." team_id: ID!): Team "Updates the role of the specified users." update_users_role( "The ids of the users to update. (Limit: 200)" user_ids: [ID!]!, "The base role name (e.g. admin, member, etc.)" new_role: BaseRoleName, "The ID of a custom role" role_id: ID): UpdateUsersRoleResult "Assigns the specified users as owners of the specified team." assign_team_owners( "The team identifier." team_id: ID!, "The user identifiers (max 200)" user_ids: [ID!]!): AssignTeamOwnersResult "Removes the specified users as owners of the specified team." remove_team_owners( "The team identifier." team_id: ID!, "The user identifiers (max 200)" user_ids: [ID!]!): RemoveTeamOwnersResult "Updates the email domain for the specified users." update_email_domain(input: UpdateEmailDomainAttributesInput!): UpdateEmailDomainResult "Updates attributes for users." update_multiple_users( "List of user updates, each containing an ID and attribute updates." user_updates: [UserUpdateInput!]!, "Whether to bypass email confirmation for claimed domains." bypass_confirmation_for_claimed_domains: Boolean): UpdateUserAttributesResult "Invite users to the account." invite_users( "The emails of the users to invite." emails: [String!]!, "The new role of the users." user_role: UserRole, "The product to invite the users to" product: Product): InviteUsersResult "Update the dependency column for a specific pulse" update_dependency_column(boardId: String!, pulseId: String!, value: DependencyValueInput!, columnId: String!, "Optional new date for the successor node (or one of its descendants). When provided, updates the successor date and all predecessor edge lags." successor_new_date: TimelineDateInput): JSON! "Batch update the dependency column values in a board. Limited to 50 items per batch." batch_update_dependency_column(boardId: String!, columnId: String!, "The list of pulses with their dependency column values to update" values: [DependencyPulseValueInput!]!): JSON! like_update( "The update identifier." update_id: ID!, "The reaction type." reaction_type: String): Update unlike_update( "The update identifier." update_id: ID!): Update! delete_update( "The update's unique identifier." id: ID!): Update edit_update( "The update's unique identifier." id: ID!, "The update text." body: String!): Update! pin_to_top( "The update's unique identifier." id: ID!, "The item unique identifier." item_id: ID): Update! unpin_from_top( "The update's unique identifier." id: ID!, "The item unique identifier." item_id: ID): Update! create_update( "The update text. Do not use @ to mention users, use the mentions field instead (if available)." body: String!, "The item's unique identifier on which the update will be created on. No need to set if you are using parent_id for replying to a post." item_id: ID, "The parent post identifier. Use this to reply to a post." parent_id: ID): Update "Create managed column of type dropdown mutation." create_dropdown_managed_column( "The column title." title: String!, "The column description." description: String, settings: CreateDropdownColumnSettingsInput): DropdownManagedColumn "Create managed column of type status mutation." create_status_managed_column( "The column title." title: String!, "The column description." description: String, settings: CreateStatusColumnSettingsInput): StatusManagedColumn "Update managed column of type dropdown mutation." update_dropdown_managed_column( "The column id." id: String!, "The column title." title: String, "The column description." description: String, settings: UpdateDropdownColumnSettingsInput, "The column revision." revision: Int!): DropdownManagedColumn "Update managed column of type status mutation." update_status_managed_column( "The column id." id: String!, "The column title." title: String, "The column description." description: String, settings: UpdateStatusColumnSettingsInput, "The column revision." revision: Int!): StatusManagedColumn "Activate managed column mutation." activate_managed_column( "The column id." id: String!): ManagedColumn "Deactivate managed column mutation." deactivate_managed_column( "The column id." id: String!): ManagedColumn "Delete managed column mutation." delete_managed_column( "The column id." id: String!): ManagedColumn delete_marketplace_app_discount( "The id of an app" app_id: ID!, "Slug of an account" account_slug: String!): DeleteMarketplaceAppDiscountResult! grant_marketplace_app_discount( "The id of an app" app_id: ID!, "Slug of an account" account_slug: String!, data: GrantMarketplaceAppDiscountData!): GrantMarketplaceAppDiscountResult! create_timeline_item( "The item the timeline item will be created in." item_id: ID!, "The user who created the timeline item. Only for account admins." user_id: Int, "The title of the timeline item." title: String!, "The creation time of the event." timestamp: ISO8601DateTime!, summary: String, content: String, "Location field value" location: String, "Phone number field value" phone: String, "URL field value" url: String, "The start and end time of the new timeline item." time_range: TimelineItemTimeRange, "The id of the custom activity of the timeline item." custom_activity_id: String!): TimelineItem delete_timeline_item( "The id of the timeline item to delete" id: String!): TimelineItem create_custom_activity( "The name of the custom activity" name: String!, "The icon of the custom activity" icon_id: CustomActivityIcon!, "The color of the custom activity" color: CustomActivityColor!): CustomActivity delete_custom_activity( "The id of the custom activity" id: String!): CustomActivity } "A notification." type Notification { "The notification's unique identifier." id: ID! "The notification text." text: String } "The notification's target type." enum NotificationTargetType { Post Project } "Indicates where the unit symbol should be placed in a number value" enum NumberValueUnitDirection { left right } "Represents a monday object." enum ObjectType { Board Folder Overview } "The working status of a user." type OutOfOffice { "Is the status active?" active: Boolean "Are notification disabled?" disable_notifications: Boolean "The status end date." end_date: Date "The status start date." start_date: Date "Out of office type." type: String } "A monday.com overview." type Overview { "The time the overview was created at." created_at: ISO8601DateTime "The creator of the overview." creator: User! "The overview's folder unique identifier." folder_id: ID "The unique identifier of the overview." id: ID! "The overview's kind (public/private)." kind: String "The overview's name." name: String! "The overview's state." state: String! "The last time the overview was updated at." updated_at: ISO8601DateTime "The overview's workspace unique identifier." workspace_id: ID } type PeopleEntity { "Id of the entity: a person or a team" id: ID! "Type of entity" kind: Kind } "A payment plan." type Plan { "The maximum users allowed in the plan." max_users: Int! "The plan's time period." period: String "The plan's tier." tier: String "The plan's version." version: Int! } "The position relative method." enum PositionRelative { after_at before_at } "Root query type for the Dependencies service" type Query { "Get the connected account's information." account: Account "Get a collection of installs of an app." app_installs( "The id of an account to filter app installs by." account_id: ID, "The id of an application." app_id: ID!, "Number of items to get, the default is 25. Max: 100" limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [AppInstall] "Get the current app subscription. Note: This query does not work in the playground" app_subscription: [AppSubscription] "Get operations counter current value" app_subscription_operations( "Operation name. A string of up to 14 characters containing alphanumeric characters and the symbols -_" kind: String = "global"): AppSubscriptionOperationsCounter "Get apps monetization information for an account" apps_monetization_info: AppsMonetizationInfo "Get apps monetization status for an account" apps_monetization_status: AppMonetizationStatus "Get a collection of assets by ids." assets( "Ids of the assets/files you want to get" ids: [ID!]!): [Asset] "Get a collection of boards." boards( "The board's kind (public / private / share)" board_kind: BoardKind, "A list of boards unique identifiers." ids: [ID!], "Boolean that brings the latest data" latest: Boolean, "Number of items to get, the default is 25." limit: Int = 25, "Property to order by (created_at / used_at)." order_by: BoardsOrderBy, "Page number to get, starting at 1." page: Int = 1, "The state of the board (all / active / archived / deleted), the default is active." state: State = active, "A list of workspace ids the boards are contained in." workspace_ids: [ID]): [Board] "Get the complexity data of your queries." complexity: Complexity "Get a collection of docs." docs( "A list of document unique identifiers." ids: [ID!], "Number of items to get, the default is 25." limit: Int = 25, "A list of associated board or object’s unique identifier." object_ids: [ID!], "Property to order by (created_at / used_at)." order_by: DocsOrderBy, "Page number to get, starting at 1." page: Int = 1, "A list of workspace ids the documents are contained in." workspace_ids: [ID]): [Document] "Get a collection of folders. Note: This query won't return folders from closed workspaces to which you are not subscribed" folders( "A list of folders unique identifiers." ids: [ID!], "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1, "A list of workspace unique identifiers to filter folders by workspaces. (pass null to include Main Workspace)" workspace_ids: [ID]): [Folder] "Get a collection of items." items( "Excludes items that are inactive, deleted or belong to deleted items" exclude_nonactive: Boolean, "A list of items unique identifiers." ids: [ID!], "Number of items to get, the default is 25." limit: Int = 25, "Get the recently created items at the top of the list" newest_first: Boolean, "Page number to get, starting at 1." page: Int = 1): [Item] "Search items by multiple columns and values." items_page_by_column_values( "The board's unique identifier." board_id: ID!, "One or more columns, and their values to search items by." columns: [ItemsPageByColumnValuesQuery!], """ An opaque token representing the position in the result set from which to resume fetching items. Use this to paginate through large result sets. """ cursor: String, """ The maximum number of items to fetch in a single request. Use this to control the size of the result set and manage pagination. Maximum: 500. """ limit: Int! = 25): ItemsResponse! "Get the connected user's information." me: User "Get next pages of board's items (rows) by cursor." next_items_page( """ An opaque token representing the position in the result set from which to resume fetching items. Use this to paginate through large result sets. """ cursor: String!, """ The maximum number of items to fetch in a single request. Use this to control the size of the result set and manage pagination. Maximum: 500. """ limit: Int! = 25): ItemsResponse! "Get a collection of tags." tags( "A list of tags unique identifiers." ids: [ID!]): [Tag] "Get a collection of teams." teams( "A list of teams unique identifiers." ids: [ID!]): [Team] "Get a collection of users." users( "A list of users' emails." emails: [String], "A list of users' unique identifiers." ids: [ID!], "The kind to search users by (all / non_guests / guests / non_pending)." kind: UserKind, "Number of users to get." limit: Int, "Allows to fuzzy search by name" name: String, "Get the recently created users at the top of the list" newest_first: Boolean, "Return non active users in the account." non_active: Boolean, "Page number to get, starting at 1." page: Int): [User] "Get the API version in use" version: Version! "Get a list containing the versions of the API" versions: [Version!] "Get a collection of webhooks for the board" webhooks( "Filters webhooks that were created by the app initiating the request" app_webhooks_only: Boolean, "Board unique identifier." board_id: ID!): [Webhook] "Get a collection of workspaces." workspaces( "A list of workspace unique identifiers." ids: [ID!], "The workspace's kind (open / closed / template)" kind: WorkspaceKind, "Number of items to get, the default is 25." limit: Int = 25, "Property to order by (created_at)." order_by: WorkspacesOrderBy, "Page number to get, starting at 1." page: Int = 1, "The state of the workspace (all / active / archived / deleted), the default is active." state: State = active): [Workspace] "Get board candidates based on workspace and usage type" board_candidates( "The workspace ID to get boards from" workspaceId: String!, "The usage type for filtering boards" usageType: BoardUsage!): [Board!] "List trigger events with optional filters" trigger_events(nextPageOffset: Int = 0, filters: TriggerEventsFiltersInput): TriggerEventsPage "Fetch a single trigger event by UUID" trigger_event(triggerUuid: String!): TriggerEvent "List block events for a given trigger UUID" block_events(triggerUuid: String!, nextPageOffset: Int = 0): BlockEventsPage "Get aggregated automation runs statistics in the account" account_trigger_statistics(filters: AccountTriggerStatisticsFiltersInput): AccountTriggerStatistics "Get aggregated automation runs statistics grouped by entity Ids" account_triggers_statistics_by_entity_id(run_status: TriggerEventState!, filters: AccountTriggersByEntityIdFiltersInput): AccountTriggersByEntityId "Get all roles for the account" account_roles: [AccountRole!] "Platform API data." platform_api: PlatformApi "Get an app by ID or slug." app( "The ID or slug of the app" id: ID!): AppType "Get a collection of monday dev sprints" sprints( "A list of monday dev sprints unique identifiers" ids: [ID!]!): [Sprint!] "Export the dependency graph for a specific board" export_graph( "The ID of the board to export the graph for" boardId: String!): BoardGraphExport "Fetch dependency column configuration for a board" dependency_column_config( "The ID of the board to fetch dependency columns from" board_id: ID!, "The account ID (needed for authentication)" account_id: ID!, "The user ID (needed for authentication)" user_id: ID!): DependencyColumnConfigResult "Export events for a board within a date range. Requires a valid X-Tool-Execution-Secret header." export_events( "Filter events by board ID" board_id: ID, "Filter events created after this date (ISO format)" start_date: String, "Filter events created before this date (ISO format)" end_date: String, "Filter events by state(s)" state: [String!], "Filter events by type(s)" type: [String!], "Maximum number of events to return (default: 100, max: 1000)" limit: Int, "Number of events to skip for pagination" offset: Int, "Field to order by (default: createdAt)" order_by: String, "Order direction: ASC or DESC (default: DESC)" order_direction: String): EventsExport updates( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1, "A list of updates unique identifiers." ids: [ID!]): [Update!] "Get managed column data." managed_column( "The managed column ids." id: [String!], "The state of the managed column." state: [ManagedColumnState!]): [ManagedColumn!] """ Placeholder query field for automations-test microservice. This can be replaced with actual queries as the service evolves. """ empty: String "Returns connections for the authenticated user. Supports filtering, pagination, ordering, and partial-scope options." connections( "Include connections that have automations attached." withAutomations: Boolean, "Filter connections by their state (e.g., active, inactive)." connectionState: String, "Validate connection state before returning the result." withStateValidation: Boolean, "Page index for offset-based pagination (starting from 1)." page: Int, "Number of records to return per page when using offset-based pagination." pageSize: Int, """ Ordering of returned connections (e.g., "createdAt", "-createdAt"). """ order: String, "Include connections created with partial scopes." withPartialScopes: Boolean, """ Cursor-based pagination parameters: specify "limit" and optionally "lastId". """ pagination: PaginationInput): [Connection!] "Returns connections that belong to the authenticated user." user_connections( "Include connections that have automations attached." withAutomations: Boolean, "Validate connection state before returning the result." withStateValidation: Boolean, "Page index for offset-based pagination (starting from 1)." page: Int, "Number of records to return per page when using offset-based pagination." pageSize: Int, """ Ordering of returned connections (e.g., "createdAt", "-createdAt"). """ order: String, """ Cursor-based pagination parameters: specify "limit" and optionally "lastId". """ pagination: PaginationInput): [Connection!] "Returns all connections for the account. Requires admin privileges." account_connections( "Include connections that have automations attached." withAutomations: Boolean, "Validate connection state before returning the result." withStateValidation: Boolean, "Page index for offset-based pagination (starting from 1)." page: Int, "Number of records to return per page when using offset-based pagination." pageSize: Int, """ Ordering of returned connections (e.g., "createdAt", "-createdAt"). """ order: String, """ Cursor-based pagination parameters: specify "limit" and optionally "lastId". """ pagination: PaginationInput): [Connection!] "Fetch a single connection by its unique ID." connection( "Unique identifier of the 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!] marketplace_app_discounts( "The id of an app" app_id: ID!): [MarketplaceAppDiscount!]! app_subscriptions( "The ID of an app" app_id: ID!, status: SubscriptionStatus, "The ID of an account" account_id: Int, "The value, which identifies the exact point to continue fetching the subscriptions from" cursor: String, "The size of the requested page" limit: Int): AppSubscriptions! custom_activity( "The ids of the custom activities to fetch" ids: [String!], "The name of the custom activity, case insensitive and partial match" name: String, "The icon of the custom activity" icon_id: CustomActivityIcon, "The color of the custom activity" color: CustomActivityColor): [CustomActivity!] timeline_item( "The id of the timeline item to delete" id: ID!): TimelineItem "Fetches timeline items for a given item" timeline( "The id of the item" id: ID!): TimelineResponse } "A reply for an update." type Reply { "The reply's html formatted body." body: String! "The reply's creation date." created_at: Date "The reply's creator." creator: User "The unique identifier of the reply creator." creator_id: String "The reply's unique identifier." id: ID! "The reply's text body." text_body: String "The reply's last edit date." updated_at: Date kind: String! edited_at: Date! likes: [Like!]! pinned_to_top: [UpdatePin!]! viewers( "Number of items to get, the default is 100." limit: Int = 100, "Page number to get, starting at 1." page: Int = 1): [Watcher!]! } "Response type for detailed board permissions. Contains information about the permissions that were set." type SetBoardPermissionResponse { "The technical board write permissions value that was set (e.g., 'everyone', 'collaborators', 'owners')." edit_permissions: BoardEditPermissions! "List of any actions that failed during the permission update process." failed_actions: [String!] } "The possible states for a board or item." enum State { active all archived deleted } "A status label style." type StatusLabelStyle { "The label's border color in hex format." border: String! "The label's color in hex format." color: String! } "A tag" type Tag { "The tag's color." color: String! "The tag's unique identifier." id: ID! "The tag's name." name: String! } "A team of users." type Team { "The team's unique identifier." id: ID! "The team's name." name: String! "The users who are the owners of the team." owners( "A list of users' unique identifiers." ids: [ID!]): [User!]! "The team's picture url." picture_url: String "The users in the team." users( "A list of users' emails." emails: [String], "A list of users' unique identifiers." ids: [ID!], "The kind to search users by (all / non_guests / guests / non_pending)." kind: UserKind, "Number of users to get." limit: Int, "Allows to fuzzy search by name" name: String, "Get the recently created users at the top of the list" newest_first: Boolean, "Return non active users in the account." non_active: Boolean, "Page number to get, starting at 1." page: Int): [User] "Whether the team is a guest team" is_guest: Boolean } "A monday.com template." type Template { "The template process unique identifier for async operations." process_id: String } "Lifecycle status of a template installation async operation." enum TemplateInstallationStatus { COMPLETE FAILED IN_PROGRESS PENDING } "Status of a template installation async operation." type TemplateInstallationStatusResult { """ Board IDs are populated incrementally during the metadata phase as each board is created, and complete by the time per-board content jobs start. Boards exist as empty shells (no items, broken mirror columns, no automations) until status is COMPLETE. Safe to store these IDs early, but do not read or write board content until COMPLETE. """ board_ids: [ID!]! "Mapping of each source (template) board ID to the newly created board ID." board_ids_map: [BoardIdMapping!]! "True iff status is COMPLETE." is_complete: Boolean! "True iff status is FAILED." is_failed: Boolean! "The process_id returned by use_template." process_id: ID! "Lifecycle status (PENDING / IN_PROGRESS / COMPLETE / FAILED)." status: TemplateInstallationStatus! } type TimeTrackingHistoryItem { "When the session was added to the cell" created_at: Date! "Only applicable if the session has ended" ended_at: Date "The identifier of an user which ended the tracking" ended_user_id: ID "A unique session identifier" id: ID! "Is true if the session end date was manually entered" manually_entered_end_date: Boolean! "Is true if the session end time was manually entered" manually_entered_end_time: Boolean! "Is true if the session start date was manually entered" manually_entered_start_date: Boolean! "Is true if the session start time was manually entered" manually_entered_start_time: Boolean! "Only applicable if the session was added by pressing the play button or via automation" started_at: Date "The identifier of an user which started the tracking" started_user_id: ID "The status of the session" status: String! "When the session was updated" updated_at: Date } "An update." type Update { "The update's assets/files." assets: [Asset] "The update's html formatted body." body: String! "The update's creation date." created_at: Date "The update's creator." creator: User "The unique identifier of the update creator." creator_id: String "The update's unique identifier." id: ID! "The update's item ID." item_id: String "The update's replies." replies: [Reply!] "The update's text body." text_body: String "The update's last edit date." updated_at: Date edited_at: Date! likes: [Like!]! pinned_to_top: [UpdatePin!]! viewers( "Number of items to get, the default is 100." limit: Int = 100, "Page number to get, starting at 1." page: Int = 1): [Watcher!]! item: Item } "Result of updating a board's position" type UpdateBoardHierarchyResult { "The updated board" board: Board "A message about the operation result" message: String "Whether the operation was successful" success: Boolean! } "Result type for updating an overview's hierarchy" type UpdateOverviewHierarchy { "Message about the operation result" message: String! "The updated overview" overview: Overview "Whether the operation was successful" success: Boolean! } "Attributes for updating an overview's hierarchy and location" input UpdateOverviewHierarchyAttributesInput { "The ID of the account product where the overview should be placed" account_product_id: ID "The ID of the folder where the overview should be placed" folder_id: ID "The position of the overview in the left pane" position: DynamicPosition "The ID of the workspace where the overview should be placed" workspace_id: ID } """ Response type for updating multiple users' board roles. Contains information about which users were successfully updated and which failed. """ type UpdateUsersBoardRoleResponse { "List of failed user updates with error details." failed_users: [FailedUserBoardRoleUpdate!]! "List of IDs of users whose board roles were successfully updated." successful_user_ids: [ID!]! } "Attributes of a workspace to update" input UpdateWorkspaceAttributesInput { "The description of the workspace to update" description: String "The kind of the workspace to update (open / closed / template)" kind: WorkspaceKind "The name of the workspace to update" name: String } "@deprecated Use UserKindFilter with the user_kind arg instead. The kind to search users by." enum UserKind { all guests non_guests non_pending } "A single user permit/action with its permission status" type UserPermit { "The name/identifier of the permit/action" name: String! "Whether the user has permission for this action" permitted: Boolean! "Contextual information about the permit reason" reason_context: UserPermitReasonContext "Technical reason code for the permission status" technical_reason: Int } "Contextual information about the permit reason" type UserPermitReasonContext { "Name of the permission that determined this permit decision" permission: String "Name of the policy that determined this permit decision" policy: String "Name of the role that determined this permit decision" role: String "The type of scope (account, workspace, board, etc.)" scope_type: UserPermitScopeKind } "A scope for checking user permits" input UserPermitScopeInput { "The scope resource ID" id: ID! "The scope type" type: UserPermitScopeKind! } "The kind of scope for user permits checks" enum UserPermitScopeKind { ACCOUNT ACCOUNT_PRODUCT BOARD WORKSPACE } "User permits grouped by scope type" type UserPermits { "Account scope permits as a list of scope ID and permits pairs" account: [UserPermitsScope!] "Account product scope permits as a list of scope ID and permits pairs" account_product: [UserPermitsScope!] "Board scope permits as a list of scope ID and permits pairs" board: [UserPermitsScope!] "Workspace scope permits as a list of scope ID and permits pairs" workspace: [UserPermitsScope!] } "A scope ID and its associated permits" type UserPermitsScope { "List of permits/actions available in this scope" permits: [UserPermit!]! "The ID of the scope (account ID, workspace ID, board ID, etc.)" scope_id: ID! } "An object containing the API version details" type Version { "The display name of the API version" display_name: String! "The type of the API version" kind: VersionKind! "Version string that can be used in API-Version header" value: String! } "All possible API version types" enum VersionKind { current deprecated dev maintenance old__maintenance old_previous_maintenance previous_maintenance release_candidate } "Monday webhooks" type Webhook { "The webhooks's board id." board_id: ID! "The webhooks's config." config: String "The event webhook will listen to" event: WebhookEventType! "The webhooks's unique identifier." id: ID! } "The webhook's target type." enum WebhookEventType { change_column_value change_name change_specific_column_value change_status_column_value change_subitem_column_value change_subitem_name create_column create_item create_subitem create_subitem_update create_update delete_update edit_update item_archived item_deleted item_moved_to_any_group item_moved_to_specific_group item_restored move_subitem subitem_archived subitem_deleted } "A monday.com workspace." type Workspace { "The account product that contains workspace." account_product: AccountProduct "The workspace's creation date." created_at: Date "The workspace's description." description: String "The workspace's unique identifier." id: ID "Returns true if it is the default workspace of the product or account" is_default_workspace: Boolean "The workspace's kind (open / closed / template)." kind: WorkspaceKind "The workspace's name." name: String! "The workspace's user owners." owners_subscribers( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [User] "The workspace's settings." settings: WorkspaceSettings "The workspace's state (all / active / archived / deleted)." state: State "The workspace's team owners." team_owners_subscribers( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [Team!] "The teams subscribed to the workspace." teams_subscribers( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [Team] "The users subscribed to the workspace" users_subscribers( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [User] } "The workspace's icon." type WorkspaceIcon { "The icon color in hex value. Used as a background for the image." color: String """ The public image URL, which is temporary in the case of a file that was uploaded by the user, so you'll need to pull a new version at least once an hour. In case it is null, you can use the first letter of the workspace name. """ image: String } "The workspace kinds available." enum WorkspaceKind { closed open template } "The membership kind of the user in the workspace." enum WorkspaceMembershipKind { all member } "The workspace's settings." type WorkspaceSettings { "The workspace icon." icon: WorkspaceIcon } "The workspace subscriber kind." enum WorkspaceSubscriberKind { owner subscriber } "Options to order by." enum WorkspacesOrderBy { created_at } "The account product kinds available for workspaces query." enum WorkspacesQueryAccountProductKind { core crm forms marketing project_management service software whiteboard } "Parameters to filter workspaces" input WorkspacesQueryInput { """ Filter workspaces by account product kind (core / marketing / crm / software / project_management / service / forms / whiteboard) """ account_product_kind: WorkspacesQueryAccountProductKind } "Result of creating an API user." type CreateApiUserResult { "The user ID of the created API user." id: ID } "Result of creating multiple users." type CreateMultipleUsersResult { "Successfully created users." created_users: [User!] "Users that could not be created." uncreated_users: [UncreatedUser!] } "Input for creating a single user." input CreateUserInput { "The kind of user to create." kind: UserKindValue! "The name for the user." name: String! "The email for the user." email: String! "The title for the user." title: String "The user creation flow to use." user_creation_flow: UserCreationFlow! "The invitation method for the user." invitation_method: CreateUserInvitationMethod! "The activation status for the user." status: UserStatus = ACTIVE "Whether the email is confirmed." confirmed_email: Boolean = true "Photo URL for the user (HTTPS only)." photo_url: String } "The invitation method allowed when creating a user via create_multiple_users." enum CreateUserInvitationMethod { API_USER_CREATION AGENT_USER_CREATION SYSTEM_CREATION } "The method by which a user was added to the account." enum InvitationMethod { USER SCIM SSO AUTH_DOMAIN FIRST_USER CONSOLIDATION INTERNAL_CREATION UNKNOWN SERVICE_PORTAL_AUTH_DOMAIN SERVICE_PORTAL_USER_INVITATION API_USER_CREATION AGENT_USER_CREATION SYSTEM_CREATION } "URLs for the user's profile photo in various sizes." type PhotoUrl { "The user's photo in original size." original: String "The user's photo in small size (150x150)." small: String "The user's photo in thumbnail size (100x100)." thumb: String "The user's photo in small thumbnail size (50x50)." thumb_small: String "The user's photo in tiny size (30x30)." tiny: String } "A user that could not be created, returning the original input and failure reason." type UncreatedUser { "The kind of user to create." kind: String "The name for the user." name: String "The email for the user." email: String "The title for the user." title: String "The activation status for the user." status: UserStatus "Whether the email is confirmed." confirmed_email: Boolean "Photo URL for the user (HTTPS only)." photo_url: String "The reason the user could not be created." reason: String } "A user that could not be updated, returning the original input and failure reason." type UnupdatedUser { "The user ID that failed to update." id: ID! "The name that was requested." name: String "The title that was requested." title: String "The photo URL that was requested." photo_url: String "The status that was requested." status: UpdatableUserStatus "The reason the user could not be updated." reason: String } "Activation status values that can be set via mutations." enum UpdatableUserStatus { ACTIVE INACTIVE } "Input for updating a single user." input UpdateUserInput { "The user ID to update." id: ID! "New name for the user." name: String "New title for the user." title: String "New photo URL for the user (HTTPS only)." photo_url: String "New activation status (ACTIVE or INACTIVE)." status: UpdatableUserStatus } "Result of updating multiple users." type UpdateUsersResult { "Successfully updated users." updated_users: [User!] "Users that could not be updated." unupdated_users: [UnupdatedUser!] } "The user creation flow/context type." enum UserCreationFlow { API_USER_CREATION AGENT_USER_CREATION SYSTEM_CREATION } "Filter for user kinds, including kind groups." enum UserKindFilter { ADMIN MEMBER GUEST VIEW_ONLY AGENT_MEMBER PERSONAL_AGENT_MEMBER AGENT_SIGNUP_USER WORK_MANAGEMENT_AGENT_MEMBER EXTERNAL_AGENT_MEMBER EXTERNAL_AGENT_DETACHED_MEMBER WORKSPACE_PRIMARY_AGENT_MEMBER SERVICE_USER VIBE_USER PORTAL PORTFOLIO_API_USER NEXUS_API_USER RESOURCE_DIRECTORY_API_USER OMNICHANNEL_API_USER GOALS_API_USER PROJECTS_API_USER SPRINT_MANAGEMENT_API_USER CRM_COMMERCE_API_USER CAMPAIGNS_API_USER DATA_RETENTION_API_USER MONDAY_SERVICE_API_USER AI_PLATFORM_AGENT_API_USER DEPENDENCIES_API_USER HISTORICAL_TRACKING_BACKFILL_API_USER ENTITY_KNOWLEDGE_API_USER ORG_HUB_API_USER BASIC } "Filter users by kind. Supports individual kinds and groups (e.g. BASIC = admin, member, guest, view_only). The not_in values are removed from the expanded in set." input UserKindFilterInput { "Include users matching these kinds or kind groups." in: [UserKindFilter!] "Exclude users matching these kinds or kind groups." not_in: [UserKindFilter!] } "A specific user kind value." enum UserKindValue { ADMIN MEMBER GUEST VIEW_ONLY AGENT_MEMBER PERSONAL_AGENT_MEMBER AGENT_SIGNUP_USER WORK_MANAGEMENT_AGENT_MEMBER EXTERNAL_AGENT_MEMBER EXTERNAL_AGENT_DETACHED_MEMBER WORKSPACE_PRIMARY_AGENT_MEMBER SERVICE_USER VIBE_USER PORTAL PORTFOLIO_API_USER NEXUS_API_USER RESOURCE_DIRECTORY_API_USER OMNICHANNEL_API_USER GOALS_API_USER PROJECTS_API_USER SPRINT_MANAGEMENT_API_USER CRM_COMMERCE_API_USER CAMPAIGNS_API_USER DATA_RETENTION_API_USER MONDAY_SERVICE_API_USER AI_PLATFORM_AGENT_API_USER DEPENDENCIES_API_USER HISTORICAL_TRACKING_BACKFILL_API_USER ENTITY_KNOWLEDGE_API_USER ORG_HUB_API_USER } "The activation status of a user." enum UserStatus { ACTIVE INACTIVE PENDING } "The direction to sort users." enum UsersSortDirection { ASC DESC } "The field to sort users by." enum UsersSortField { CREATED_AT } "Input for sorting users." input UsersSortInput { "The field to sort by." field: UsersSortField! "The sort direction." direction: UsersSortDirection! } """ Represents the mute state of a board for the current user. - NOT_MUTED: The board is not muted at all (default state). This state, as well as MUTE_ALL, is set by the board owner(s) and only they can change it. - MUTE_ALL: All notifications for all users are muted on this board. This state, as well as NOT_MUTED, is set by the board owner(s) and only they can change it. - MENTIONS_AND_ASSIGNS_ONLY: The current user will only be notified if mentioned or assigned on the board. - CUSTOM_SETTINGS: The current user will only be notified for the enabled custom settings. configurable settings: IM_MENTIONED, IM_ASSIGNED, AUTOMATION_NOTIFY - CURRENT_USER_MUTE_ALL: Only the current user has all notifications muted from this board. """ enum BoardMuteState { NOT_MUTED MUTE_ALL MENTIONS_AND_ASSIGNS_ONLY CUSTOM_SETTINGS CURRENT_USER_MUTE_ALL } "Whether this channel is editable, always enabled, or not relevant to the notification" enum ChannelEditableStatus { AllRelatedNotificationsDontHaveChannel AlwaysEnabled Editable } "Available notification channel types: Monday, Email, Slack" enum ChannelType { Monday Email Slack } "These settings can be customized when the board is in CUSTOM_SETTINGS mute state. Configurable settings: IM_MENTIONED, IM_ASSIGNED, AUTOMATION_NOTIFY" enum CustomizableBoardSettings { IM_MENTIONED IM_ASSIGNED AUTOMATION_NOTIFY } "Represents a notification channel configuration" type NotificationSettingChannel { "Notification channel destination: Monday, Email, Slack" name: ChannelType "Whether notifications are enabled for this channel" enabled: Boolean "Whether or not this channel settings is editable" editable_status: ChannelEditableStatus } "notification settings scope types, the options are account user defaults or user private settings" enum ScopeType { User AccountNewUserDefaults } "Response from saving a workspace as a template" type SaveWorkspaceAsTemplateResponse { "The template ID of the created template" template_id: Int } "A solution" type Solution { "Unique identifier for the solution" id: String "Name of the solution" title: String "Description of the solution" description: String "Creation date of the solution" createdAt: String "Last update date of the solution" updatedAt: String "Thumbnail URL of the solution" thumbnailUrl: String "appFeatureReferenceId of the solution" appFeatureReferenceId: String } "The type of template that can be created" enum TemplateType { standard_template managed_template } "Inferred metadata associated with a board, such as custom terminology settings." type BoardInferredMetadata { "The custom terminology used for items in this board" item_type: String } "Manually set metadata associated with a board." type BoardManualMetadata { "Markdown content describing the board" board_md: String } "A suggested AI agent based on user activity patterns" type SuggestedAgent { "The title of the suggested agent" title: String "A hook/one-liner for the agent" pitch: String "A user-friendly explanation of why this agent is suggested" description: String "List of 3rd-party connectors this agent uses (e.g., Jira, Google Calendar)" connectors: [String!] "Whether this agent should have web search capabilities" include_web_search: Boolean "Confidence score (0.0–1.0) that the user will benefit from this agent" confidence: Float "A ready-to-use prompt for creating this agent via monday-agents" seed_prompt: String "List of triggers that define when this agent should run" triggers: [SuggestedTrigger!] } "A trigger that defines when a suggested agent should run" type SuggestedTrigger { "Automations framework block reference ID for this trigger" block_reference_id: ID "JSON-encoded field values matching the automations API format: { fieldKey: { value, fieldTypeReferenceId } }" field_values: String } "Input for updating a single board's inferred metadata" input UpdateBoardInferredMetadataInput { "The ID of the board to update" board_id: ID! "The custom terminology for items in this board" item_type: String! } "Result of a single board inferred metadata update within a bulk operation" type UpdateBoardInferredMetadataResult { "The ID of the board that was updated" board_id: ID "The updated inferred metadata for the board" inferred_metadata: BoardInferredMetadata "Error message if the update failed" error: String "Whether the update succeeded" success: Boolean } "Input for updating a single board's manual metadata" input UpdateBoardManualMetadataInput { "The ID of the board to update" board_id: ID! "Markdown content describing the board" board_md: String! } "Result of a single board manual metadata update within a bulk operation" type UpdateBoardManualMetadataResult { "The ID of the board that was updated" board_id: ID "The updated manual metadata for the board" manual_metadata: BoardManualMetadata "Error message if the update failed" error: String "Whether the update succeeded" success: Boolean } "Effort hours per kind (allocated, planned, spent, available)." type Effort { "Allocated effort hours." allocated: Float "Planned effort hours." planned: Float "Spent effort hours." spent: Float "Available capacity hours." available: Float } "Kind of effort or availability to include in the utilization report." enum EffortKind { ALLOCATED PLANNED SPENT AVAILABLE } "Resource attribute allowed for grouping in the utilization report." enum GroupByResourceAttribute { TEAMS LOCATION SKILLS JOB_ROLE RESOURCE_MANAGER } "Returned when the portfolio has no connected projects." type PortfolioNoConnectedProjects { "Always true — signals that the portfolio has no connected projects." has_no_connected_projects: Boolean } "A resource belonging to a portfolio, with name resolved from the resource directory." type PortfolioResource { "The resource ID." id: ID "The resource name." name: String } "Input for fetching the list of resource IDs belonging to a portfolio." input PortfolioResourcesInput { "The portfolio ID to fetch resources for." portfolio_id: ID! } "Input for searching resources within a portfolio by name." input PortfolioResourcesSearchInput { "The portfolio ID to scope the search to." portfolio_id: ID! "Resource name search term. Length: 1-100 chars." search_term: String! } "Portfolio utilization report result: utilization data (grouped or ungrouped) or a signal that no projects are connected." union PortfolioUtilizationReport = UtilizationReportGrouped | UtilizationReportUngrouped | PortfolioNoConnectedProjects "Input for portfolio utilization report. Extends utilization report with portfolio context — resolves portfolio to board IDs automatically." input PortfolioUtilizationReportInput { "Time range and granularity for the report." time_range: TimeRangeInput! "Effort kinds to include (e.g. ALLOCATED, PLANNED, SPENT, AVAILABLE)." effort_types: [EffortKind!]! "Optional attribute to group results by (TEAMS, LOCATION, SKILLS, JOB_ROLE, RESOURCE_MANAGER only)." group_by_attribute: GroupByResourceAttribute "Optional list of resource IDs to filter by. If not provided, all resources are included (subject to limit)." resource_ids: [ID!] "When true, include project breakdown in the response. Defaults to false." include_project_breakdown: Boolean "Maximum number of items per page (1–25, default 25). Paginates groups when grouped, or resources when ungrouped." limit: Int = 25 "Page number for pagination (1-based, default 1). Paginates groups when grouped, or resources when ungrouped." page: Int = 1 "Denominator for utilization ratio. Defaults to AVAILABLE (utilization = effort / available)." utilization_denominator: UtilizationDenominator "The portfolio ID to scope the report to. Board IDs are resolved from the portfolio." portfolio_id: ID! } "Effort and utilization for a single time bucket." type TimeBucket { "Label for this bucket (e.g. week or month)." label: String "Effort hours in this bucket." effort: Effort "Utilization ratios in this bucket." utilization_ratios: UtilizationRatios } "Granularity of time buckets (day, week, month, quarter, year)." enum TimeGranularity { DAYS WEEKS MONTHS QUARTERS YEARS } "Header for a time period (label and date range)." type TimePeriodHeader { "Human-readable label for the period." label: String "Start date of the period (ISO 8601)." start_date: String "End date of the period (ISO 8601)." end_date: String } "Time range and granularity for utilization report buckets." input TimeRangeInput { "Start of the time range (ISO 8601 date: YYYY-MM-DD)." start_date: String! "End of the time range (ISO 8601 date: YYYY-MM-DD)." end_date: String! "Granularity of time buckets (days, weeks, months, quarters, years)." granularity: TimeGranularity! } "Denominator for utilization ratio (e.g., utilization = effort / available). Determines what value is used as the denominator." enum UtilizationDenominator { AVAILABLE ALLOCATED SPENT } "Utilization ratios (e.g. spent/available) per effort kind." type UtilizationRatios { "Allocated / denominator ratio." allocated: Float "Planned / denominator ratio." planned: Float "Spent / denominator ratio." spent: Float } "Utilization report: either grouped by attribute or ungrouped with per-resource data." union UtilizationReport = UtilizationReportGrouped | UtilizationReportUngrouped "Utilization report grouped by an attribute value." type UtilizationReportGroup { "ID of the attribute value this group represents." attribute_value_id: ID "Number of resources in this group." resource_count: Int "Time buckets for this group." time_buckets: [TimeBucket!] } "Utilization report grouped by an attribute." type UtilizationReportGrouped { "Headers for each time period in the report." time_period_headers: [TimePeriodHeader!] "Effort kinds included in the report (e.g. allocated, spent)." effort_types: [String!] "Attribute used for grouping." group_by_attribute: String "Aggregates per attribute value." groups: [UtilizationReportGroup!] "Total number of attribute groups across all pages (before pagination)." total_group_count: Int } "Input for the utilization report query: time range, effort kinds, optional grouping and filters." input UtilizationReportInput { "Time range and granularity for the report." time_range: TimeRangeInput! "Effort kinds to include (e.g. ALLOCATED, PLANNED, SPENT, AVAILABLE)." effort_types: [EffortKind!]! "Optional attribute to group results by (TEAMS, LOCATION, SKILLS, JOB_ROLE, RESOURCE_MANAGER only)." group_by_attribute: GroupByResourceAttribute "Optional list of resource IDs to filter by. If not provided, all resources are included (subject to limit)." resource_ids: [ID!] "When true, include project breakdown in the response. Defaults to false." include_project_breakdown: Boolean "Maximum number of items per page (1–25, default 25). Paginates groups when grouped, or resources when ungrouped." limit: Int = 25 "Page number for pagination (1-based, default 1). Paginates groups when grouped, or resources when ungrouped." page: Int = 1 "Denominator for utilization ratio. Defaults to AVAILABLE (utilization = effort / available)." utilization_denominator: UtilizationDenominator "Optional list of board IDs to scope effort data to specific boards." board_ids: [ID!] } "Utilization breakdown per project for a resource." type UtilizationReportProjectBreakdown { "ID of the project." project_id: ID "Time buckets for this project." time_buckets: [TimeBucket!] } "Utilization data for a single resource." type UtilizationReportResource { "ID of the resource." resource_id: ID "Whether this row is a placeholder (e.g. unassigned)." is_placeholder: Boolean "Time buckets for this resource." time_buckets: [TimeBucket!] "Per-project breakdown when requested." project_breakdown: [UtilizationReportProjectBreakdown!] } "Utilization report with per-resource data (not grouped)." type UtilizationReportUngrouped { "Headers for each time period in the report." time_period_headers: [TimePeriodHeader!] "Effort kinds included in the report (e.g. allocated, spent)." effort_types: [String!] "Per-resource utilization data." resources: [UtilizationReportResource!] "Total number of resources across all pages (before pagination)." total_resource_count: Int } "Enum representing different usage types for board operations" enum BoardUsage { CONVERT_TO_PROJECT CONNECT_TO_PORTFOLIO } input ColumnsMappingInput { project_status: ID! project_timeline: ID! project_owner: ID! } input ConvertBoardToProjectInput { board_id: ID! column_mappings: ColumnsMappingInput! callback_url: String } type ConvertBoardToProjectResult { success: Boolean message: String projectId: ID process_id: String } input CreateProjectInput { "The name of the project to create" name: String! "The project's privacy setting (public / private)" board_kind: BoardKind! "Optional template id to create the project from. Currently only supported for solution templates" template_id: ID """ Optional list of companion features to enable (currently only "resource_planner") """ companions: [String!] "Optional workspace ID to associate with the project" workspace_id: String "Optional folder ID to associate with the project" folder_id: String "Optional external callback URL where the project ID will be sent after async creation. The callback will receive a POST request with { is_success: boolean, process_id: string, project_id?: number }" callback_url: String } type CreateProjectResult { "Indicates if the project creation request was accepted" success: Boolean "Success message when project creation is initiated" message: String "Error message if project creation request failed" error: String "Unique process ID for tracking this creation request. This will be included in the callback when creation completes." process_id: ID } "The Article is the main object type of monday.com Knowledge product. A collaborative article that can contain rich text, media, and structured content. Articles have both draft and published versions, and are organized within workspaces and folders, with configurable privacy settings and access controls. They support features like version history, real-time collaboration, and can be shared with specific users or teams. Articles are commonly used for documentation, knowledge sharing, and team collaboration." type Article { "The Article is the main object type of monday.com Knowledge product. Article Metadata is a subset of the Article object that contains only the metadata of the article, not the article itself. It is used to get the metadata of an article without having to fetch the article itself." metadata: ArticleMetadata "The content blocks that make up the article." blocks: [ArticleBlock!] } "The content blocks that make up the article." type ArticleBlock { "The block's unique identifier." id: ID "The block's content." content: JSON "The block's creation date." created_at: String "The block's creator" created_by: User "The unique identifier of the published article that contains this block." published_article_id: ID "The block's parent block unique identifier. Will be null if the block is at the top level of the article." parent_block_id: ID "The block's position on the article." position: Float "The block content type." type: String "The block's last updated date." updated_at: String } "The Article is the main object type of monday.com Knowledge product. Article Metadata is a subset of the Article object that contains only the metadata of the article, not the article itself. It is used to get the metadata of an article without having to fetch the article itself." type ArticleMetadata { "The unique identifier of the article object. Can be used to reference this specific object in queries and mutations. This ID can be found in the article's URL." object_id: ID "The ID of the draft version of this article." draft_article_id: ID "The ID of the published version of this article." published_article_id: ID "The display name of the article. This is what appears in the monday.com interface." name: String "The kind/visibility setting of the article (private, public). Determines who can access it." privacy_kind: String "The ID of the workspace containing this article." workspace_id: ID "The ID of the folder containing this article, if the article is organized in a folder structure." folder_id: ID "Timestamp of when the article was last updated. Format is ISO 8601." updated_at: String "The current state of the article. Determines visibility in the interface." state: String "The ID of the user who created this article. Useful for tracking article origin." creator: ID "List of users who are owners of this article. Owners have full control permissions." owners: [User!] "List of users who are subscribers to this article. Subscribers receive notifications about changes." subscribers: [User!] } "Text formatting attributes (bold, italic, links, colors, etc.)" type Attributes { "Apply bold formatting to the text" bold: Boolean "Apply italic formatting to the text" italic: Boolean "Apply underline formatting to the text" underline: Boolean "Apply strikethrough formatting to the text" strike: Boolean "Apply inline code formatting to the text" code: Boolean "URL to create a hyperlink" link: String "Text color (hex, rgb, or named color)" color: String "Background color for text highlighting (hex, rgb, or named color)" background: String } "Text formatting attributes (bold, italic, links, colors, etc.)" input AttributesInput { "Apply bold formatting to the text" bold: Boolean "Apply italic formatting to the text" italic: Boolean "Apply underline formatting to the text" underline: Boolean "Apply strikethrough formatting to the text" strike: Boolean "Apply inline code formatting to the text" code: Boolean "URL to create a hyperlink" link: String "Text color (hex, rgb, or named color)" color: String "Background color for text highlighting (hex, rgb, or named color)" background: String } "Alignment options for blocks" enum BlockAlignment { LEFT RIGHT CENTER } "Describes what type of change occurred to a block between two versions." type BlockChanges { "True if this block was added in the newer version." added: Boolean "True if this block was deleted in the newer version. The content reflects the state before deletion." deleted: Boolean "True if this block content was modified between the two versions." changed: Boolean } "Abstract union type representing different types of block content" union BlockContent = TextBlockContent | ListBlockContent | NoticeBoxContent | ImageContent | VideoContent | TableContent | LayoutContent | DividerContent | PageBreakContent "Text direction options for blocks" enum BlockDirection { LTR RTL } "Object representing structured data within a text block" union BlotContent = Mention | DocsColumnValue "Object representing structured data within a text block" input BlotInput { "Mention blot data" mention: MentionInput "Column value blot data" column_value: DocsColumnValueInput } "A cell containing a reference to a block" type Cell { "The ID of the block representing the cell (parent block of all the content blocks in the cell)" block_id: String! } "Column style configuration" type ColumnStyle { "The width percentage of the column" width: Int! } "Column style configuration input" input ColumnStyleInput { "The width percentage of the column" width: Int! } """ Choose one specific block type to create. 💡 TIP: Before using table_block, consider add_content_to_doc_from_markdown for tables with data. table_block creates empty structure requiring manual cell population. """ input CreateBlockInput { "Create a text block (normal text, titles)" text_block: TextBlockInput "Create a list block (bulleted, numbered, checklist)" list_block: ListBlockInput "The notice-box's own ID must be captured. Every block that should appear inside it must be created with parentBlockId = that ID (and can still use afterBlockId for ordering among siblings)." notice_box_block: NoticeBoxBlockInput "Create an image block" image_block: ImageBlockInput "Create a video block" video_block: VideoBlockInput "Create a table block. Capture its returned ID; nest child blocks by setting parentBlockId to that ID and use afterBlockId for sibling ordering." table_block: TableBlockInput "Create a layout block. Capture its returned ID; nest child blocks by setting parentBlockId to that ID and use afterBlockId for sibling ordering." layout_block: LayoutBlockInput "Create a divider block" divider_block: DividerBlockInput "Create a page break block" page_break_block: PageBreakBlockInput } "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." id: ID "The type of block (e.g., text, image, list)." type: String "The block content as a JSON string." content: String "A human-readable summary of what changed in this block. For text blocks, shows the added and deleted text. For other block types, describes the change type." summary: String "The parent block ID, or null if the block is at the top level." parent_block_id: ID "The changes that occurred to this block (added, deleted, or changed)." changes: BlockChanges } "Input for creating divider blocks" input DividerBlockInput { "The parent block id to append the created block under." parent_block_id: String } "Base interface for all block content types" interface DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection } "Response from adding markdown content to a document. Contains success status and the IDs of newly created blocks." type DocBlocksFromMarkdownResult { "True if markdown was successfully converted and added to the document" success: Boolean! "Array of block IDs that were created from the markdown content. Use these IDs to reference or modify the newly created blocks." block_ids: [String!] "Detailed error message if the operation failed. Check this when success is false." error: String } "Object link data for a doc attached to a column - contains the parent board, item, and column identifiers." type DocObjectLink { "The object ID of the parent board that contains the doc column." parent_object_id: ID! "The ID of the item the doc is attached to." item_id: ID! "The ID of the doc column on the item." column_id: ID! } "A single restoring point (snapshot) in the document version history. Represents a group of changes made within a time window, including which users made changes." type DocRestoringPoint { "The ISO 8601 timestamp of when this restoring point was captured." date: String "The IDs of users who made changes in this restoring point time window." user_ids: [ID!] """ The type of restoring point. "publish" indicates the document was published at this point. Null for regular edit snapshots. """ type: String "AI agents that contributed changes in this restoring point time window." agent_attributions: [RestoringPointAgentAttribution!] } "Represents the diff between two versions of a document. Contains the blocks that were added, deleted, or changed between two restoring points." type DocVersionDiff { "The ID of the document this diff belongs to." doc_id: ID "The newer version date used for this diff." date: String "The older version date used for this diff." prev_date: String "The list of blocks that have changes between the two versions. Only blocks with actual changes are included." blocks: [DiffBlock!] } "Represents the version history of a document, including a list of restoring points (snapshots) that capture the state of the document at specific points in time." type DocVersionHistory { "The ID of the document this version history belongs to." doc_id: ID "The list of restoring points (snapshots) for this document, ordered by date descending." restoring_points: [DocRestoringPoint!] } "Column value reference for displaying board item column data" type DocsColumnValue { "The ID of the board item" item_id: ID "The ID of the column" column_id: String } "Column value reference for displaying board item column data" input DocsColumnValueInput { "The ID of the board item" item_id: ID! "The ID of the column" column_id: String! } "Type of mention - user, document, or board" enum DocsMention { USER DOC BOARD } "Controls what gets copied when duplicating a document" enum DuplicateType { duplicate_doc_with_content duplicate_doc_with_content_and_updates } "Response from exporting document content as markdown. Contains the generated markdown text or error details." type ExportMarkdownResult { "True if document content was successfully exported as markdown" success: Boolean! "The exported markdown content as a string. Ready to use in other systems or save to files." markdown: String "Detailed error message if the export failed. Check this when success is false." error: String } enum GreetingType { HELLO GOODBYE } "Input for creating image blocks" input ImageBlockInput { "The parent block id to append the created block under." parent_block_id: String "The monday.com asset ID of the image" asset_id: ID "The public URL of the image" public_url: String "The width of the image" width: Int } "Response from importing an HTML document. Contains success status and the ID of the newly created document." type ImportDocFromHtmlResult { "True if HTML was successfully converted and imported as a new document" success: Boolean! "The ID of the newly created document. Use this ID to reference or modify the imported document." doc_id: String "Detailed error message if the operation failed. Check this when success is false." error: String } "Content inserted in delta operations" type InsertOps { "Plain text content" text: String "Object representing structured data within a text block" blot: BlotContent } "Content to insert in delta operations" input InsertOpsInput { "Plain text content" text: String "Object representing structured data within a text block" blot: BlotInput } """ Input for creating layout blocks. Behaviour: • When a layout is created the system automatically generates column_count child "cell" blocks (one per column). • The layout block itself is just a container; each generated cell block has parentBlockId === and acts as the direct parent for any content you want to insert into that column. • The creation response already contains the ordered list of generated cell IDs under `content[0].cells` (1-D array from left to right). • To populate a layout: 1. Create the layout and capture its ID. 2. Obtain the cell block IDs either by inspecting `content[0].cells` in the response **or** by querying the document for children of the layout block. 3. Create your content blocks (textBlock, imageBlock, tableBlock, etc.) with parentBlockId set to the specific cell block ID. • Use afterBlockId only to order siblings *within* the same cell. """ input LayoutBlockInput { "The parent block id to append the created block under." parent_block_id: String "The number of columns in the layout" column_count: Int! "The column style configuration" column_style: [ColumnStyleInput!] } "Specific types of list blocks" enum ListBlock { BULLETED_LIST NUMBERED_LIST CHECK_LIST } "Input for creating list blocks (bulleted, numbered, todo)" input ListBlockInput { "The parent block id to append the created block under." parent_block_id: String alignment: BlockAlignment direction: BlockDirection "The specific type of list block (defaults to bulleted list)" list_block_type: ListBlock "The text content in delta format - array of operations with insert content and optional attributes" delta_format: [OperationInput!]! "The indentation level of the list item" indentation: Int } "Mention object for user or document references" type Mention { "The unique identifier of the mentioned entity" id: ID "The type of the mentioned entity" type: DocsMention } "Mention object for user or document references" input MentionInput { "The ID of the mentioned user or document" id: ID! "The type of mention: user, doc, or board" type: DocsMention! } "The notice-box's own ID must be captured. Every block that should appear inside it must be created with parentBlockId = that ID (and can still use afterBlockId for ordering among siblings)." input NoticeBoxBlockInput { "The parent block id to append the created block under." parent_block_id: String theme: NoticeBoxTheme! } "Theme options for notice box blocks" enum NoticeBoxTheme { INFO TIPS WARNING GENERAL } "A delta operation with insert content and optional formatting attributes" type Operation { "Content to insert - either text or blot object" insert: InsertOps "Optional formatting attributes (bold, italic, underline, strike, code, link, color, background)" attributes: Attributes } "A delta operation with insert content and optional formatting attributes" input OperationInput { "Content to insert - either text or blot object" insert: InsertOpsInput! "Optional formatting attributes (bold, italic, underline, strike, code, link, color, background)" attributes: AttributesInput } "Input for creating page break blocks" input PageBreakBlockInput { "The parent block id to append the created block under." parent_block_id: String } "Defines the visibility and access control settings for objects in the Monday.com Objects Platform." enum PrivacyKind { PRIVATE PUBLIC } "An AI agent that contributed changes in this restoring point time window." type RestoringPointAgentAttribution { "The ID of the agent that made changes." agent_id: ID """ The type of entity (e.g. "agent", "workflow"). """ entity_type: String "The display name of the agent, if available." agent_name: String } """ Input for creating table blocks. ⚠️ RECOMMENDATION: Use add_content_to_doc_from_markdown with markdown tables instead for simpler table creation. Behavior: - When a table is created, the system automatically generates `row_count × column_count` child "cell" blocks (one per cell). - The table block is a container. Each generated cell block has `parentBlockId === ` and is used to insert content. Important: - Always use the 2D matrix returned under `content[0].cells` to access cells. - This matrix is row-major: `matrix[rowIndex][columnIndex]`. - Do not rely on the order returned by `docs { blocks { ... } }`, as it's implementation-specific. Recommended workflow: 1. Create the table and capture its ID. 2. Read `content[0].cells` to get the cell ID matrix. 3. Use bulk create blocks to create all the child blocks (e.g. textBlock, imageBlock) with `parentBlockId = matrix[row][col]`. Use `afterBlockId` only to order siblings within the same cell. """ input TableBlockInput { "The parent block id to append the created block under." parent_block_id: String "The number of columns in the table" column_count: Int! "The number of rows in the table" row_count: Int! "The width of the table" width: Int "The column style configuration" column_style: [ColumnStyleInput!] } "A row of cells in a table" type TableRow { "The cells in this row" row_cells: [Cell!]! } "Text block formatting types. Controls visual appearance and semantic meaning." enum TextBlock { NORMAL_TEXT LARGE_TITLE MEDIUM_TITLE SMALL_TITLE CODE QUOTE } "Input for creating text blocks (normal text, titles, quote, code)" input TextBlockInput { "The parent block id to append the created block under." parent_block_id: String alignment: BlockAlignment direction: BlockDirection "The specific type of text block (defaults to normal text)" text_block_type: TextBlock "The text content in delta format - array of operations with insert content and optional attributes" delta_format: [OperationInput!]! } "Input for creating video blocks" input VideoBlockInput { "The parent block id to append the created block under." parent_block_id: String "The raw URL of the video" raw_url: String! "The width of the video" width: Int } "An artifact produced by or associated with a workstream run" type Artifact { "Unique artifact identifier" id: ID "ID of the entity this artifact represents" entity_id: ID "Type of entity (e.g. board, doc)" entity_type: String "ID of the object this artifact belongs to" object_id: ID "Lifecycle state of the artifact" state: ArtifactState "ID of the container this artifact belongs to" container_id: ID "Type of the container (e.g. Workspace)" container_type: String "ID of the user who created this artifact" created_by: ID "ISO 8601 timestamp" created_at: Date "ISO 8601 timestamp" updated_at: Date "The latest asset for this artifact (latest version via assets-core)" asset: ArtifactAsset "The board this artifact represents — fields resolved via federation" board: Board "The document this artifact represents — fields resolved via federation" doc: Document "Runs associated with this artifact" runs: [ArtifactRun!] } "An asset associated with an artifact" type ArtifactAsset { "Asset identifier" id: ID "Asset file name" name: String "ISO 8601 creation timestamp" created_at: String "The file's extension, including the leading dot" file_extension: String "The file's size in bytes" file_size: Int "Original dimensions as WIDTHxHEIGHT; null for non-image assets" original_geometry: String "URL to view the asset" url: String "Thumbnail URL; only available for images" url_thumbnail: String "Temporary public URL to access the asset, valid for 1 hour" public_url: String "The user who uploaded the asset — fields resolved via federation" uploaded_by: User } "A run associated with an artifact" type ArtifactRun { "Unique run identifier" run_id: ID "ID of the agent that produced this run" agent_app_feature_id: ID "ID of the artifact as known by the agent" agent_artifact_id: ID "ID of the asset produced by this run" asset_id: ID "ID of the user who triggered this run" triggered_by_user_id: ID "ID of the conversation that triggered this run" conversation_id: ID "ISO 8601 timestamp" created_at: Date "ISO 8601 timestamp" updated_at: Date } "Lifecycle state of an artifact" enum ArtifactState { ACTIVE DELETED } "Aggregated automation runs statistics in the account" type AccountTriggerStatistics { "Unique identifier for the statistics result" id: ID! "Number of successful automation runs" success: Int "Number of failed automation runs" failure: Int "Total number of automation runs" total: Int } "Filters for account trigger statistics query" input AccountTriggerStatisticsFiltersInput { "Filter by board Id" board_id: Int "Filter by multiple user Ids" user_ids: [Int!] } "Aggregated automation runs statistics grouped by entity Ids" type AccountTriggersByEntityId { "Unique identifier for the statistics result" id: ID! "Statistics for automations grouped by automation Id. Returns an object where each key is an automation Id, and the value contains the total count and breakdown by error reason" automation_statistics: JSON "Statistics for workflows grouped by workflow entity Id. Returns an object where each key is a workflow entity Id, and the value contains the total count and breakdown by error reason" workflow_statistics: JSON } "Filters for account triggers statistics by entity Id query" input AccountTriggersByEntityIdFiltersInput { "Filter by board Id" board_id: Int "Exclude statistics for the specified automation Ids" automation_ids: [Int!] "Filter by multiple user Ids" user_ids: [Int!] } "Automation block execution event" type BlockEvent { "Document identifier" id: String "Account identifier" accountId: Int "User identifier who triggered the automation" userId: Int "Board identifier" boardId: Int "Kind of the block event" eventKind: String "Current state of the block event" eventState: String "UUID of the parent trigger event" triggerUuid: String "Timestamp (epoch) when parent trigger started" triggerStarted: Float "Date when parent trigger started" triggerStartedAt: ISO8601DateTime "Timestamp (epoch) when block started" blockStartTimestamp: Float "Timestamp (epoch) when block finished" blockFinishTimestamp: Float "Atomic action identifier" atomicActionId: String "Block title" title: String "Whether block condition was satisfied" conditionSatisfied: Boolean "Workflow node identifier" workflowNodeId: Int "Entity kind for the block" entityKind: String "Number of billing actions counted in this block" billingActionCountForBlock: Int "Error reason if block failed" errorReason: String } "A page of block events" type BlockEventsPage { "List of block events in the current page" blockEvents: [BlockEvent!] } "Date range filter (inclusive)" input DateRangeInput { "Start date (ISO 8601)" startDate: String! "End date (ISO 8601)" endDate: String! } "Represents a single automation trigger event" type TriggerEvent { "Account identifier" accountId: Int "Trigger UUID" triggerUuid: String "Kind of the event" eventKind: String "Current state of the event" eventState: String "Timestamp (epoch) when trigger started" triggerStarted: Float "Date when trigger started" triggerStartedAt: ISO8601DateTime "Creation time of the record" createdAt: ISO8601DateTime "Error reason if the event failed" errorReason: String "Number of billing actions counted for this trigger" billingActionsCount: Int "Waiting trigger name, when applicable" waitingForTriggerName: String "Duration of the trigger in milliseconds" triggerDuration: Float "Entity kind for the trigger (item / subitem / etc.)" entityKind: String "Reignition subscription ID if trigger was reignited" reignitionSubscriptionId: String "Host type on which the automation is executed" hostType: String "Host instance ID" hostInstanceId: String "Original creator feature reference ID" creatorAppFeatureReferenceId: String } "Automation run status" enum TriggerEventState { success failure exhausted } "Filters for querying trigger events" input TriggerEventsFiltersInput { "Date range filter" dateRange: DateRangeInput "Filter by entity kind" entityKind: String "Filter by automation IDs" automationIds: [Int!] "Filter by workflow entity IDs" workflowEntityIds: [Int!] "Filter by event state" stateFilter: [String!] "Filter by item identifier" itemId: String "Whether to filter only monday automations" filterByEntity: Boolean "True if entity is automation" isAutomationsEntity: Boolean "Filter by app names" appFilter: [String!] "Filter by host type" hostType: String "Filter by host instance identifier" hostInstanceId: String "Filter by creator app feature reference ID" creatorAppFeatureReferenceId: Int "Billing action count field to filter by" billingActionCountField: String "Whether workflow filter is applied" isWorkflowFilter: Boolean "Filter by board identifier" boardId: String "Filter by status" statusFilter: [String!] } "A page of trigger events and pagination data" type TriggerEventsPage { "List of trigger events in the current page" triggerEvents: [TriggerEvent!] } "Account context information." type AccountContext { "Unique account identifier." id: ID "Account name." name: String """ Account industry. Examples: "Technology", "Healthcare", "Finance". """ industry: String "Industry sector." sector: String "Industry sub-sector." sub_sector: String "Primary use cases for the account." golden_use_cases: [String!] """ Platform usage categories. Examples: "project_management", "crm", "marketing". """ platform_usages: [String!] """ Active monday.com products. Values: "core", "crm", "software", "marketing", "project_management", "service". """ active_product_kinds: [String!] } "A board where the user has item assignments." type AssignedBoard { "Board ID" board_id: ID "Number of items assigned to the user on this board" assignment_count: Int "Board details resolved via federation from the boards subgraph." board: Board } "Intelligence data." type Intelligence { "Top visited boards ranked by relevance (frequency + recency)." relevant_boards( "Maximum number of boards to return. Default: 10, Max: 50." limit: Int): [RelevantBoard!] "Top related users ranked by relevance (multi-signal frequency + recency)." relevant_people( "Maximum number of users to return. Default: 10, Max: 50." limit: Int): [RelevantPerson!] "User and account context information." context: UserContextResponse "Boards where the user has item assignments." assigned_boards( "User ID. Defaults to the authenticated user." user_id: ID, "Maximum number of boards to return. Default: 20, Max: 100." size: Int): [AssignedBoard!] } "A board ranked by relevance based on visit frequency and recency." type RelevantBoard { "Board ID" id: ID "Board details resolved via federation from the boards subgraph." board: Board } "A user ranked by relevance based on interaction frequency and recency." type RelevantPerson { "User ID" id: ID "User details resolved via federation from the users subgraph." user: User } "User context information." type UserContext { "Unique user identifier." id: ID "User display name." name: String "User job title." title: String "User email address." email: String """ User type. Values: null (regular), "guest", "view_only", "portal_user". """ kind: String """ User job role. Examples: "project_manager", "marketing_manager", "ceo". """ job_role: String """ User job department. Examples: "engineering", "marketing", "sales", "hr". """ job_department: String "Organizational department within the workspace." department: String """ User time zone. Examples: "America/New_York", "Europe/London". """ time_zone: String """ User locale for date and number formatting. Examples: "en-US", "de-DE". """ locale: String "Number of days since the user became active." tenure_days: Int } "Combined user and account context." type UserContextResponse { "User context." user: UserContext "Account context." account: AccountContext } "Input for enrolling multiple items to a single sequence" input EnrollToSequenceInput { "The ID of the sequence to enroll items to" sequence_id: ID! "The ID of the board containing the items" board_id: ID! "List of item IDs to enroll (maximum 50 items)" item_ids: [ID!]! } "Result of enrolling items to a sequence" type EnrollToSequenceResult { "List of item IDs that were successfully enrolled, including items that were provided and are already enrolled" succeeded_item_ids: [ID!] "List of item IDs that failed to enroll" failed_item_ids: [ID!] } "A sequence that can be used to automate email outreach" type Sequence { "The unique identifier of the sequence" id: ID "The title of the sequence" title: String "The current status of the sequence" status: SequenceStatus "The type of context the sequence is associated with" context_type: SequenceContext "The ID of the context (e.g., board ID) the sequence is associated with" context_id: ID "The ID of the user who owns the sequence" user_id: ID "The number of steps in the sequence" step_count: Int "The total duration of the sequence in seconds" duration: Int "The timestamp when the sequence was created or last updated" created_at: Date "The timestamp when the sequence was created or last updated" updated_at: Date } "The type of context a sequence is associated with" enum SequenceContext { BOARD } "The status of a sequence" enum SequenceStatus { ACTIVE INACTIVE MISSING_CONFIG DELETED } "Aggregates data from one or more boards." type Dashboard { "Unique identifier of the dashboard." id: ID "Dashboard title (UTF-8 chars)." name: String "ID of the workspace that owns this dashboard." workspace_id: ID "Visibility level: `PUBLIC` (default) or `PRIVATE`." kind: DashboardKind "Folder ID that groups elements inside the workspace (null = workspace root)." board_folder_id: ID } "Dashboard visibility. `PUBLIC` dashboards are visible to all workspace members; `PRIVATE` dashboards are only visible to invited users." enum DashboardKind { PUBLIC PRIVATE } "Widget types available for creating data visualizations and displays" enum ExternalWidget { CHART NUMBER BATTERY CALENDAR GANTT } "Data visualization object." type Widget { "Unique identifier of this widget." id: ID "Parent container where the widget is placed." parent: WidgetParentOutput "The type of widget (CHART, NUMBER, BATTERY, CALENDAR, GANTT, MAP)." kind: ExternalWidget "Widget label (UTF-8 chars)." name: String } "Parent container input where the widget will be placed." input WidgetParentInput { "The type of parent container (DASHBOARD or BOARD_VIEW)" kind: WidgetParentKind! "The ID of the parent container." id: ID! } "The kind of parent container where the widget will be placed." enum WidgetParentKind { DASHBOARD BOARD_VIEW } "Parent container information in widget responses. Indicates where the widget is placed." type WidgetParentOutput { "The type of parent container (DASHBOARD or BOARD_VIEW)" kind: WidgetParentKind "The ID of the parent container." id: ID } "Information about a widget type and its JSON schema" type WidgetSchemaInfo { "The widget kind (e.g., Chart, Number, Battery)" widget_type: ExternalWidget "The JSON schema (draft 7) for this widget type" schema: JSON } "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 { OK ERROR } "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 { PENDING RUNNING COMPLETED FAILED EXPIRED CANCELLED } "The central type in the Monday.com Objects Platform, representing any entity in the system. This unified type can represent instances of boards, docs, dashboards, workflows, and specialized objects. The specific type of an object is determined by its object_type_unique_key." type Object { "The unique identifier of the object. Can be used to reference this specific object in queries and mutations." id: String "The display name of the object. This is what appears in the Monday.com interface." name: String "Optional description of the object, providing additional context about its purpose or contents." description: String "The kind/visibility setting of the object (private, public, share). Determines who can access it." privacy_kind: String "The ID of the folder containing this object, if the object is organized in a folder structure." folder_id: String "Timestamp of when the object was last updated. Format is ISO 8601." updated_at: String "The current state of the object. Determines visibility in the interface." state: String "The ID of the user who created this object. Useful for tracking object origin." creator: String "The ID of the workspace containing this object. Null indicates the object is in the main workspace." workspace_id: String "List of users who are owners of this object. Owners have full control permissions." owners: [User!] "List of users who are subscribers to this object. Subscribers receive notifications about changes." subscribers: [User!] } "Response for object operations indicating success or failure" type ObjectOperationResponse { "Indicates whether the operation was successful" success: Boolean } "The state of the object." enum ObjectState { ACTIVE ARCHIVED DELETED } "Represents object type unique key and metadata." type ObjectTypeUniqueKey { "The name of the app that provides this object type." app_name: String "The name of the app feature object type (e.g., 'Workflow', 'Capacity manager')." app_feature_name: String "A short description of what this object type represents." description: String "The unique identifier for the object type, formatted as 'app_slug::app_feature_slug'" object_type_unique_key: String } "Defines the sorting order for returned objects in the objects query." enum OrderBy { CREATED_AT USED_AT } "The direction of the relation from the object perspective" enum RelationDirection { OUTGOING INCOMING } "Defines the type of the user's role as members of the object" enum SubscriberKind { OWNER SUBSCRIBER } "Input for updating an object" input UpdateObjectInput { "The new name for the object." name: String "The new description for the object" description: String "The new privacy kind for the object." privacy_kind: PrivacyKind } "Response from AI action request" type AiActionResponse { "The structured response data from the AI" data: JSON "Whether the request was successful" success: Boolean "Token usage information" usage: TokenUsage } "Response from document AI extraction request" type AiDocumentActionResponse { "The structured extraction result from the AI" data: JSON "Whether the request was successful" success: Boolean "Token usage information" usage: TokenUsage "Warnings encountered during processing (e.g. skipped assets)" warnings: [String!] } "Allowed MIME types for file uploads" enum AllowedFileMime { IMAGE_PNG IMAGE_JPEG IMAGE_GIF IMAGE_WEBP IMAGE_AVIF IMAGE_HEIC IMAGE_SVG VIDEO_MP4 VIDEO_WEBM VIDEO_QUICKTIME VIDEO_OGG APPLICATION_PDF TEXT_CSV APPLICATION_XLSX TEXT_MARKDOWN TEXT_PLAIN } "An audit record for app actions" type AppAudit { "Unique identifier for the audit record" id: ID! "The account ID associated with the audit" account_id: ID! "The user ID who performed the action" user_id: ID! "Whether the user who performed the action is an admin" is_admin: Boolean! "The type of audit action" type: AppAuditKind "The app ID that was audited" app_id: ID! "The date and time the audit record was created" created_at: Date } "The type of app audit action" enum AppAuditKind { UNPUBLISH } "AI captioning status of a vibe asset" enum AssetCaptionStatus { NONE PENDING COMPLETED FAILED } "ETag for a completed S3 upload part" input AssetCompletePartInput { "Part number matching the part returned by asset_upload" part_number: Int! "ETag header value returned by S3 after uploading the part" etag: String! } "Input for completing a multipart asset upload" input AssetCompleteUploadInput { "Upload session ID from asset_upload" upload_id: ID! "Resolved filename from asset_upload" filename: String! "MIME type of the asset" content_type: String! "File size in bytes" file_size: Int! "Completed part ETags from S3" parts: [AssetCompletePartInput!]! } "Presigned S3 URL for a single multipart upload part" type AssetPartUrl { "Part number for multipart upload ordering" part_number: Int "Presigned S3 URL to upload this part directly" url: String "Byte range this part should contain" size_range: AssetSizeRange! } "Byte range for a multipart upload part" type AssetSizeRange { "Start byte offset of this upload part" start: Int "End byte offset of this upload part" end: Int } "Result of initiating a multipart asset upload" type AssetUploadResult { "Upload session ID — pass to asset_complete_upload once all parts are uploaded" upload_id: ID "Resolved filename (may differ from input if a collision was auto-suffixed)" filename: String "Presigned S3 URLs for each upload part" parts: [AssetPartUrl!]! } "Billing cycle information for the AI credits bucket of the current account" type BillingCycleDates { "Start date of the current billing cycle (ISO 8601). Null when no AI credits bucket is provisioned" start_date: String "End date of the current billing cycle (ISO 8601). Null when no AI credits bucket is provisioned" end_date: String } "Input for specifying a board data source (type is always BOARD)" input BoardDataSourceInput { "The ID of the board" id: String! } "Prompt suggestions for a single board" type BoardPromptSuggestions { "The ID of the board these suggestions are for" board_id: ID "The prompt suggestions for this board" suggestions: [PromptSuggestion!] } "Permission result for creating views on a specific board" type BoardViewPermission { "The board ID" board_id: ID "Whether the user can create views on this board" can_create: Boolean } "A chat message in a conversation" type ChatMessage { "Unique identifier for the chat message" id: Int "ID of the Vibe app this message belongs to" vibe_app_id: Int "ID of the account that owns this message" account_id: Int "ID of the user who sent or received this message" user_id: Int "Who sent this message" sender: ChatSender "The message content" message: JSON "The type of message" message_type: ChatMessageKind "The mode of the message (BUILD or ASK)" mode: ChatModeKind "ID of the code version associated with this message" code_version_id: String "ID of the version that was live when this user message initiated code generation" rollback_version_id: String "AI credits charged for generating the response to this user message." credits_used: Int "LangSmith trace id for the turn that produced this message. Exposed only to users with the trace-exposure flag enabled; populated only in environments where tracing is on. Clients build the trace URL from this id." langsmith_trace_id: ID "Temporal workflow run id for the turn that produced this message. Gated behind the same trace-exposure flag as langsmith_trace_id. The workflow id is the vibe app id; clients build the Temporal UI URL from the run id, namespace, app id, env and region." temporal_run_id: ID "Temporal namespace for the turn that produced this message (`vibe`, or `default` under monday-mirror). Gated behind the same trace-exposure flag as langsmith_trace_id." temporal_namespace: String "User feedback for this chat message" feedbacks: [UserFeedback!]! "Files attached to this message" files: [ChatMessageFile!]! "UI element references attached to this message" component_references: [ChatMessageComponentReference!]! "The date and time the object was created" created_at: Date "The date and time the object was last updated" updated_at: Date } "A UI element reference attached to a chat message" type ChatMessageComponentReference { "Human-readable element label shown in the UI chip" title: String """ Clearest locator for the agent, e.g. "src/components/Hero.tsx:42" """ component_path: String "React component display name, when resolvable" component_name: String "Source file relative to the app project root, when resolvable" source_file: String "1-based line number in the source file, when resolvable" line: Int "React owner-stack string (render path), when resolvable" stack: String "Outer HTML snippet of the picked element (smart-elided by the app)" html: String "Trimmed visible text of the picked element, when present" text: String } "Input for a UI element reference attached to a chat message" input ChatMessageComponentReferenceInput { "Human-readable element label shown in the UI chip" title: String! """ Clearest locator for the agent, e.g. "src/components/Hero.tsx:42" """ component_path: String! "React component display name, when resolvable" component_name: String "Source file relative to the app project root, when resolvable" source_file: String "1-based line number in the source file, when resolvable" line: Int "React owner-stack string (render path), when resolvable" stack: String "Outer HTML snippet of the picked element (smart-elided by the app)" html: String "Trimmed visible text of the picked element, when present" text: String } "A file attached to a chat message" type ChatMessageFile { "The original file name" file_name: String "The MIME type of the file" mime_type: AllowedFileMime "Presigned URL to download the file" download_url: String } "Input for a file attached to a chat message" input ChatMessageFileInput { "The S3 key where the file is stored" s3_key: String! "The original file name" file_name: String! "The MIME type of the file" mime_type: AllowedFileMime! } "The type of chat message" enum ChatMessageKind { PROCESSING TEXT REASONING ERROR INDICATION CTA TOOL_CALL BOARD_CONNECTED BOARD_DISCONNECTED CHIPS } "Input for paginating chat messages" input ChatMessagePaginationInput { "Maximum number of messages to retrieve (default: 10)" limit: Int = 10 "Fetch messages starting from this Date (inclusive)" fromDate: Date "Fetch messages before this Date (exclusive)" beforeDate: Date } "The mode of a chat message" enum ChatModeKind { BUILD ASK PLAN } "The sender of a chat message" enum ChatSender { USER VIBE } "A generated code file" type CodeFile { "File path (e.g. src/generated/App.jsx)" path: String "File content" content: String } "Permission result for a connected board" type ConnectedBoardPermission { "The board ID" board_id: ID "Whether the user can access and edit content in this board" can_edit: Boolean } "Mode for creating a new vibe app" enum CreateAppModeInput { BUILD ASK PLAN } "Result of creating a board view instance for a pre-built vibe" type CreateBoardViewPreBuiltResult { "Whether the operation was successful" success: Boolean "ID of the created view" view_id: ID! } "Input for handling credentials created event" input CredentialsCreatedInput { "The ID of the AI app" ai_app_id: ID! "The ID of the CTA message" message_id: ID! "The ID of the block instance" block_instance_id: ID! "The key for the credentials" credentials_key: String! "The reference ID for the credentials" credentials_reference_id: ID! "The ID of the created credentials" credentials_id: ID! "Optional variable key for updating existing variable" variable_key: ID } "Result of handling credentials created event" type CredentialsCreatedResult { "The ID of the AI app" ai_app_id: ID "The variable key (unique within aiAppId) for referencing this credential" variable_key: Int } "The current public-template-link share token if one exists for the app's live code version" type CurrentPublicTemplateLinkResult { "The share token for the public template link" share_token: String } "Input for specifying a data source for a multi-board vibe app" input DataSourceInput { "The ID of the data source (e.g. board ID)" id: String! "The type of data source" type: MondayDataSourceType! } "Result of a deployment operation" type DeploymentResult { "Whether the operation was successful" success: Boolean } "Result of enhancing a prompt with AI capabilities" type EnhancedPromptResult { "The original user prompt" original: String "The AI capabilities text that was added" addition: String } "The sentiment of user feedback" enum FeedbackSentiment { POSITIVE NEGATIVE } "Presigned URL for uploading a file to S3" type FileUploadUrl { "Presigned URL to upload the file directly to S3" upload_url: String "S3 key where the file will be stored" s3_key: String "When the presigned URL expires" expires_at: Date "Assets-core upload session — present when vibe-assets-upload flag is ON and file_size was provided. Pass upload_id and part ETags to vibe.asset_complete_upload after uploading to each part URL." asset_upload_result: AssetUploadResult } "Result of generating a marketplace template for a vibe app" type GenerateMarketplaceTemplateResult { "The share token for the marketplace template" share_token: String } "Result of generating a public template link for a vibe app" type GeneratePublicTemplateLinkResult { "The share token for the public template link" share_token: String } "Result of generating a public template link for a vibe app (deprecated alias)" type GenerateRemixLinkResult { "The share token for the public template link" share_token: String } "Types of entities that can host an AI app instance" enum HostEntityType { BOARD ITEM WORKSPACE DASHBOARD BOARD_VIEW } "Input for specifying the host target where the app will be installed" input HostTargetInput { "The type of host entity (e.g. board)" type: String! "The ID of the host entity" id: String } "A curated design/style inspiration for app creation" type InspirationItem { "The inspiration identifier" id: ID! """ Style name, e.g. "Minimal SaaS" """ style: String! """ Use case tagline, e.g. "Clean, airy, lots of whitespace" """ use_case: String! "Absolute CDN URL for the thumbnail image" thumbnail_url: String! } "Result of installing an app from a public template link" type InstallFromPublicTemplateLinkResult { "The ID of the newly created app" ai_app_id: ID "The number of boards included in the installed template" boards_count: Int } "Result of installing an app from a public template link (deprecated alias)" type InstallFromRemixResult { "The ID of the newly created app" ai_app_id: ID "The number of boards included in the installed template" boards_count: Int } "Result of executing an integration block" type IntegrationExecutionResult { "The output fields returned by the integration block execution" output_fields: JSON } "An integration variable (credentials or field value)" type IntegrationVariable { "Unique identifier for the variable" id: ID "ID of the AI app this variable belongs to" ai_app_id: ID "The variable key slot" variable_key: Int "Type of variable: AppFeatureCredentials or AppFeatureFieldType" app_feature_type: String "Reference ID of the app feature" app_feature_reference_id: ID "The date and time the object was created" created_at: Date "The date and time the object was last updated" updated_at: Date } "Available LLM models for code generation" enum LLMModelInput { CLAUDE_4_5_SONNET CLAUDE_4_6_SONNET CLAUDE_5_SONNET CLAUDE_HAIKU_4_5 CLAUDE_OPUS_4_6 GEMINI_3_1_PRO GEMINI_3_5_FLASH GEMINI_3_1_FLASH_LITE GPT_5_NANO GPT_5 GPT_5_MINI GPT_5_1 GPT_5_2 } "Message type for sending chat messages" enum MessageTypeInput { TEXT ASK ERROR } "Reference to a monday.com file-column asset for document extraction" input MondayAssetDocumentSourceInput { "The monday.com asset ID (obtained from BoardSDK file-column queries)" asset_id: ID! } "Types of Monday.com entities that can be used as data sources" enum MondayDataSourceType { BOARD ITEM OBJECT } "A prompt suggestion for a vibe" type PromptSuggestion { "The name of the prompt suggestion" name: String "The prompt suggestion" prompt: String } "The type of context for generating prompt suggestions" enum PromptSuggestionFor { USER BOARD ITEM OBJECT SEARCH_QUERY WIDGET } "The platform requesting prompt suggestions" enum PromptSuggestionPlatform { WEB MOBILE } "Display metadata for a public-template-link, used on the install preview card" type PublicTemplateLinkPreviewResult { "The name of the source app" name: String "A short description of the source app. Currently always null until tagline backfill ships." description: String "The vibe variant of the source app" variant: String "Image URLs for the install card. Null until SharedTemplates.images is populated." images: [String!] "The id of the source AI app the template was created from" source_ai_app_id: ID } "Paginated result for published community apps" type PublishedCommunityAppsResult { "The apps on the current page" items: [SharedTemplate!] "Whether there are more apps beyond this page" has_next_page: Boolean } "Fields available for sorting published_community_apps results" enum PublishedCommunityAppsSortBy { DOWNLOADS UPDATED_AT } "Response from queue_message mutation" type QueueMessageResponse { "The ID assigned to the queued message" message_id: ID } "A message waiting in the queue while the agent is busy" type QueuedMessage { "The id assigned to the queued message" message_id: ID "The message content" message: String "Whether this is a chat-mode (discuss) message" is_chat_mode: Boolean "LLM model selected for code generation" model: String "When the message was queued (epoch milliseconds)" created_at: Float "Files attached to the queued message" files: [QueuedMessageFile!]! } "A file attached to a queued message" type QueuedMessageFile { "The S3 key where the file is stored" s3_key: String "The original file name" file_name: String "The MIME type of the file" mime_type: AllowedFileMime } "A recently visited Vibe app with per-user visit timestamps" type RecentVibeApp { "The Vibe app" vibe_app: VibeApp "When the user last VIEW-visited this app (null if never viewed)" last_viewed_at: Date "When the user last BUILD-visited this app (null if never built)" last_built_at: Date } "A board-relevant prompt suggestion, render-ready with a thumbnail style" type RelevantPromptSuggestion { "Short suggestion title (badge)" name: String "The prompt text the user submits" prompt: String """ Thumbnail layout style token (one of the known thumbnail styles, e.g. "data_table") """ style: String "Short preview label for the thumbnail" title: String "Board attribution (single-element today, may be multiple later)" board_ids: [ID!] "Board name(s) for the chip shown on the card" board_names: [String!] } "A vibe app shared as a community template" type SharedTemplate { "Unique identifier of the shared template" id: ID "Display name of the shared template" name: String "Description of what the template does" description: String "The vibe variant of the template" variant: String "Tags associated with this template" tags: [String!] "Image URLs for this template" images: [String!] "The UI framework used by this template" ui_framework: String! "The kind of this template" kind: SharedTemplateKind "The publication status of this template" status: SharedTemplateStatus "Number of times this template has been downloaded" downloads: Int "The date and time the template was created" created_at: Date "The date and time the template was last updated" updated_at: Date } "The kind of shared template" enum SharedTemplateKind { REMIX MARKETPLACE } "The publication status of a shared template" enum SharedTemplateStatus { DRAFT PENDING_REVIEW PUBLISHED REJECTED UNLISTED ARCHIVED } "Sort order direction" enum SortOrder { ASC DESC } "Standard success response for mutations" type SuccessResponse { "Whether the operation was successful" success: Boolean "Optional message describing the result" message: String } "Full ThemeDefinition (used for extracted/custom themes). The radii/light/dark fields are JSON-encoded — radii must contain sm/md/lg/xl/2xl, and light/dark must contain the full ThemeColorTokens map. Validated server-side via resolveTheme." input ThemeDefinitionInput { "The theme identifier (e.g. extracted_<8-char-hash>)" id: ID! "Theme display name" name: String! """ Base border radius CSS length (e.g. "12px") """ radius: String! "Primary font family name" font_family: String! "Secondary font family name" font_family_secondary: String! "Border radius scale as a JSON object with sm/md/lg/xl/2xl CSS length values" radii: JSON! "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! } "Theme selection input for app creation. Provide a full `definition` (extracted theme)." input ThemeInput { "Full ThemeDefinition for an extracted theme." definition: ThemeDefinitionInput } "Token usage details from AI request" type TokenUsage { "Total tokens used in the request" total_tokens: Int "Tokens used in the prompt" prompt_tokens: Int "Tokens used in the completion" completion_tokens: Int } "Decision for a tool call requiring human approval" enum ToolCallDecision { APPROVED REJECTED } "Input for responding to a tool call that requires human input" input ToolCallResponseInput { "The ID of the tool call to respond to" tool_call_id: String! "Whether to approve or reject the tool call" decision: ToolCallDecision! "Additional data to pass to the tool execution (merged with tool input)" payload: JSON } "Result of checking eligibility to transition a vibe app to external mode" type TransitionToExternalEligibility { "Whether the current user owns all boards connected to this app" is_eligible: Boolean } "Result of updating marketplace template data" type UpdateMarketplaceDataResult { "The share token of the updated marketplace template" share_token: String } "User feedback for AI chat messages" type UserFeedback { "Unique identifier for the feedback" id: ID "The account ID associated with the feedback" accountId: Int "The user ID who provided the feedback" userId: Int "The sentiment of the feedback (positive or negative)" feedbackSentiment: FeedbackSentiment "The feedback message text content" feedbackMessage: String "The ID of the chat message this feedback relates to" messageId: ID "When the feedback was created" createdAt: Date "When the feedback was last updated" updatedAt: Date } "A user request for various operations" type UserRequest { "Unique identifier for the request" id: ID! "The account ID associated with the request" account_id: Int! "The user ID who created the request" user_id: Int! "The type of request" type: UserRequestKind "The date and time the object was created" created_at: Date "The date and time the object was last updated" updated_at: Date "The date and time the object was deleted" deleted_at: Date } "The type of user request" enum UserRequestKind { request_to_upgrade_plan notify_plan_close_to_limit request_to_make_app_public request_to_upgrade_board_connection request_to_upgrade_before_apps_unpublish } "One aggregate bucket. `key` is null for an ungrouped aggregate." type VibeAggregateBucket { "Group key; null for an ungrouped aggregate." key: JSON "Computed aggregate value." value: Float } "Aggregate function computed over matching documents." enum VibeAggregateFn { COUNT SUM AVG MIN MAX } "A vibe app created by the AI app builder" type VibeApp { "The unique identifier of the vibe app" id: Int "The user ID of the vibe app creator" user_id: Int "The current status of the vibe app" status: VibeAppStatus "Whether the current version returned to the user is preview of a draft or live version" is_preview_mode: Boolean! "The live frontend deployment URL" deployment_url: String "The draft deployment URL for the frontend" deployment_draft_url: String "The CDN subdomain assigned to this app" cdn_key: String "A short AI-generated tagline describing what the app does" tagline: String "Presigned URL for the screenshot of the app's latest live version. The owner and members with full access to all connected boards/objects receive the full image; other members receive a blurred variant. Null when there is no live version or no stored screenshot." screenshot_url: String "The name of the vibe app" name: String "Whether the current app version is published to live" is_published: Boolean! "The lifecycle state of the vibe app" state: VibeAppState! "The UI metadata of the vibe app" ui_metadata: VibeAppUIMetadata! "Configuration settings for the vibe app" config: VibeAppConfig! "The date when the vibe app was published" published_at: Date "The app feature reference ID corresponding to this vibe app" app_feature_reference_id: ID "The variant of the vibe app (GraphQL wire key, e.g. VIBE_ITEM_VIEW)" variant: String "The date and time the object was created" created_at: Date "The date and time the object was last updated" updated_at: Date "The ID of the first chat message for this app, or null if no messages exist" first_chat_message_id: ID "The owner of this Vibe app, or null if the user could not be resolved" owner: VibeAppOwner "Chat messages for this app. Returns messages in chronological order (oldest to newest)" chat_messages( "Pagination options for fetching messages" pagination: ChatMessagePaginationInput = {limit: 10}): [ChatMessage!]! "Instances of this vibe app deployed to different Monday.com entities" instances( "Fetch instances at account level (returns instances for all account members)" account_level: Boolean): [VibeAppInstance!]! "All active code versions for this vibe app, ordered by version number descending" code_versions( "Maximum number of versions to retrieve (default: 50, max: 100)" limit: Int = 50, "Filter criteria for code versions" where: VibeCodeVersionWhereInput): [VibeCodeVersion!]! "Audit records for this app" audits( "Filter audits by type" type: AppAuditKind, "Maximum number of audits to return" limit: Int, "Page number (1-based)" page: Int): [AppAudit!]! } "Public access info for a vibe app, keyed by the app's mapped vibe user id (the board member id)." type VibeAppAccess { "The vibe user id this app is mapped to (the board member id)." vibe_user_id: ID "The vibe app id. Used by the client to build the builder/edit link." app_id: ID "The vibe app name." name: String "The public deployment URL of the app, if deployed." public_link: String } "Configuration settings for the vibe app" type VibeAppConfig { "Whether the app should automatically promote new versions to live" auto_promote: Boolean } "Input for updating vibe app configuration" input VibeAppConfigInput { "Whether the app should automatically promote new versions to live" auto_promote: Boolean } "Counts of vibe apps by publish status" type VibeAppCounts { "Total number of apps" total: Int "Number of published apps" live: Int "Number of unpublished apps" draft: Int } "An instance of a vibe app deployed to a specific Monday.com entity" type VibeAppInstance { "Unique identifier for the app instance" id: Int "Type of the entity hosting this app instance" host_entity_type: HostEntityType "ID of the specific entity hosting this app instance" host_entity_id: String "Type of the entity used as data source" data_source_entity_type: MondayDataSourceType "IDs of the specific entities used as data sources" data_source_entity_ids: [String!] "External instance identifier" instance_id: String "ID of the folder containing this app instance" folder_id: ID "The date and time the object was created" created_at: Date "The date and time the object was last updated" updated_at: Date } "The owner of a Vibe app" type VibeAppOwner { "The owner user ID" id: ID "The owner display name" name: String "The owner profile photo URLs" photo_url: VibeAppOwnerPhotoUrl } "Photo URL variants for a Vibe app owner (original, small, thumb)" type VibeAppOwnerPhotoUrl { "Full-resolution photo URL" original: String "Small photo URL" small: String "Thumbnail photo URL" thumb: String } "Status of a vibe app including existence and publish state" type VibeAppPublishStatus { "Whether the app exists in the database" exists: Boolean "Whether the app is published (only meaningful if exists is true)" is_published: Boolean } "Visibility scope for searching Vibe apps" enum VibeAppSearchScope { ALL MY ACCOUNT } "Fields available for sorting search_apps results" enum VibeAppSearchSortField { UPDATED_AT CREATED_AT NAME } "Sort options for search_apps" input VibeAppSearchSortInput { "Field to sort by (default: UPDATED_AT)" field: VibeAppSearchSortField = UPDATED_AT "Sort direction (default: DESC)" order: SortOrder = DESC } "Field to sort vibe apps by" enum VibeAppSortField { UPDATED_AT CREATED_AT IS_PUBLISHED PUBLISHED_AT NAME STATE } "Input for sorting vibe apps" input VibeAppSortInput { "Field to sort by" field: VibeAppSortField = UPDATED_AT "Sort order" order: SortOrder = DESC } "The lifecycle state of a vibe app" enum VibeAppState { PRIVATE INTERNAL EXTERNAL OLD_PRIVATE OLD_INTERNAL } "Counts of vibe apps by lifecycle state" type VibeAppStateCounts { "Total number of apps" total: Int "Number of publicly accessible apps" public: Int "Number of apps published within the account" internal: Int "Number of private/draft apps" draft: Int } "The status of an AI-generated app" enum VibeAppStatus { CREATED GENERATING PROCESSING_MESSAGE DEPLOYING READY } "An app's App DO storage overview: usage, quota, and its collections." type VibeAppStorage { "Bytes currently used by this app." storage_bytes: Float "Soft storage quota in bytes." quota_bytes: Float "Collections in this app's storage." collections: [VibeCollection!] } "The UI metadata of the vibe app" type VibeAppUIMetadata { "The color of the app card" app_card_color: String "The source of the app creation" source: String } "The current user's access verdict for a specific vibe app." type VibeAppUserAccess { "The vibe app id." ai_app_id: ID "True iff the user has 'read' on every connected board AND (for OBJECT / OBJECT_FULLSTACK variants) 'read' on the app's object." has_access: Boolean "Connected board ids the user does NOT have read access to. Empty when all connected boards are authorized. Drives a request-board-access flow on the client." unauthorized_board_ids: [ID!] "The object id (= app instance_id) the user does NOT have read access to. Null when the app is not an object variant OR the user is authorized on the object. Drives a request-object-access flow on the client." unauthorized_object_id: ID } "The status of a code version" enum VibeAppVersionStatus { DRAFT LIVE RETIRED INTERRUPTED } "The type of visit when a user opens a Vibe app" enum VibeAppVisitKind { VIEW BUILD } "An image or media asset uploaded to and shared across the account" type VibeAsset { "Unique identifier for the vibe asset" id: ID "Vibe app this asset is scoped to, or null for account-level assets" app_id: ID "Asset ID in the assets-core platform service" asset_id: ID "Original filename of the uploaded asset" filename: String "MIME type of the asset (e.g. image/png)" mime_type: String "File size in bytes" file_size: Int "Permanent public CDN URL for the asset" cdn_url: String "Image width in pixels, populated after captioning" width: Int "Image height in pixels, populated after captioning" height: Int "AI-generated caption describing the asset content" description: String "AI-generated alt text for accessibility" alt_text: String "Current status of the AI captioning process" caption_status: AssetCaptionStatus "Timestamp when the asset was uploaded" created_at: Date "Timestamp when the asset was last updated" updated_at: Date } "A single operation within a batch write." input VibeBatchOpInput { "One of 'insert' | 'upsert' | 'update' | 'delete'." op: String! "Target collection." collection: String! "Document id (required for upsert/update/delete)." id: ID "Document payload (for insert/upsert/update)." data: JSON } "A code version of a vibe app" type VibeCodeVersion { "The unique identifier of the code version" id: String "The status of this code version" status: VibeAppVersionStatus "The sequential version number for this code version" version_number: Int "A descriptive name for this version" version_name: String "When this version was deployed to live (if applicable)" deployed_at: Date "When this version was retired (if applicable)" retired_at: Date "The CDN deployment URL for this version" deployment_url: String "Generated code files for this version (from src/generated/ directory)" files: [CodeFile!]! "Presigned URL for the app screenshot (generated on request)" screenshot_url: String "The date and time the object was created" created_at: Date "The date and time the object was last updated" updated_at: Date } "Filter input for code versions" input VibeCodeVersionWhereInput { "Filter by version status (DRAFT, LIVE, RETIRED)" status: VibeAppVersionStatus } "A document collection within an app's App DO storage." type VibeCollection { "Collection name." name: String "Number of documents in the collection." doc_count: Int "Inferred field schema, sampled on demand. Empty for empty collections." fields( "Max documents to sample for inference." sample_size: Int): [VibeCollectionField!] } "An inferred field of a collection (from sampling documents)." type VibeCollectionField { "Dot-path of the field." path: String "JSON types observed for this field across the sample." types: [String!] "Fraction of sampled docs containing this field (0..1)." presence: Float "A sample value for this field, if any." sample: JSON } "One App DO document. `data` is the opaque app-defined JSON payload." type VibeDocument { "Document id (unique within its collection)." id: ID "Opaque app-defined JSON payload." data: JSON "Creation time (epoch milliseconds)." created_at: Float "Last-update time (epoch milliseconds)." updated_at: Float "Actor that created the document." created_by: String "Actor that last updated the document." updated_by: String } "A page of documents with an opaque forward cursor." type VibeDocumentConnection { "Documents in this page." nodes: [VibeDocument!] "Cursor to fetch the next page; null when there are no more." end_cursor: String "Whether another page exists." has_next_page: Boolean } "A single AND-ed filter. `field` is a dot-path (e.g. `address.city`)." input VibeFilterInput { "Dot-path to the document field to filter on." field: String! "Comparison operator." op: VibeFilterOp! "Omit / null for IS NULL checks; array for IN." value: JSON } "Comparison operator for a document filter. Filters combine with AND only." enum VibeFilterOp { EQ NEQ LT LTE GT GTE IN ARRAY_CONTAINS } "Namespace for all vibe-related mutations" type VibeMutations { "Rollback an AI app to an older specific version" rollback_to_version( "The id of the vibe app" id: ID!, "The id of the version to rollback to" version_id: String!): SuccessResponse "Execute an AI action and get a structured response" ai_actions( "The prompt to send to the AI" prompt: String!, "JSON Schema for structured output (optional, defaults to text response)" schema: JSON, "System prompt to guide the AI behavior" systemPrompt: String, "The ID of the app making the request" appId: ID, "Web search configuration for context augmentation" useWebSearch: WebSearchConfigInput, "Optional session ID for tracking" session_tracker: String): AiActionResponse! "Extract structured data from document files using AI" document_ai_action( "The extraction prompt describing what to extract from the documents" prompt: String!, "JSON Schema for structured output (optional, defaults to text response)" schema: JSON, "System prompt to guide the AI behavior" system_prompt: String, "The ID of the app making the request" app_id: ID!, "Monday.com file-column asset references to extract data from" monday_assets: [MondayAssetDocumentSourceInput!]!): AiDocumentActionResponse! "Enhance a user prompt to include AI capabilities" enhance_prompt( "The original user prompt to enhance" prompt: String!): EnhancedPromptResult! "Get a presigned URL to upload a file to S3" file_upload_url( "Original file name" file_name: String!, "MIME type of the file" mime_type: AllowedFileMime!, "File size in bytes. When provided, the response may include asset upload information." file_size: Int): FileUploadUrl "Initiate a multipart upload for a vibe asset" asset_upload(filename: String!, content_type: String!, file_size: Int!): AssetUploadResult "Complete a multipart asset upload and persist the asset" asset_complete_upload(input: AssetCompleteUploadInput!): VibeAsset "Delete a vibe asset" asset_delete(id: ID!): Boolean } "Ordering clause for a document query." input VibeOrderByInput { "Dot-path to order by." field: String! "Sort direction; defaults to ASC." dir: VibeSortDir } "Permissions for vibe related actions" type VibePermissions { "Permission to create open workspaces" create_open_workspace: Boolean "Permission to publish vibe apps as trusted apps" can_publish_trusted_app: Boolean "Permission to create or edit vibe apps" can_create_or_edit_vibe_app: Boolean "Permission to publish vibe apps to the public web" can_publish_to_public_web: Boolean "Permission to generate public vibe template links" can_generate_public_vibe_templates: Boolean "Permission to create views on the specified boards" create_board_views( "Array of board IDs to check permissions for" board_ids: [ID!]!): [BoardViewPermission!] "Permission to view the connected boards for an AI app" connected_boards( "The AI app ID to get connected boards permissions for" ai_app_id: ID, "The app feature reference id corresponding to the vibe app" app_feature_reference_id: ID): [ConnectedBoardPermission!] } "Filter apps by published status" enum VibePublishedStatusFilter { ALL PUBLISHED NOT_PUBLISHED } "Namespace for all vibe-related queries" type VibeQueries { "Get this vibe app details" app( "The id of the vibe app" id: ID, "The app feature reference id corresponding to the vibe app" appFeatureReferenceId: ID, "Get app at account level" account_level: Boolean): VibeApp "Get a list of vibe apps for the current user" apps(status: VibeAppStatus, "Filter by published status. Default: ALL" published_status: VibePublishedStatusFilter, "Filter by app states. When provided, only apps with matching states are returned." states: [VibeAppState!], "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1, "Search term for filtering apps" search_term: String, "[DEPRECATED] Use search_term instead" searchTerm: String, "Sorting options. Default: { field: updatedAt, order: DESC }" sort_by: VibeAppSortInput, "If true, executes this operation with admin privileges (admin only)" as_admin: Boolean): [VibeApp!] "Get a list of vibe apps by app feature reference IDs" apps_by_feature_reference( "List of app feature reference IDs" app_feature_reference_ids: [ID!]!, "Sorting options. Default: { field: updatedAt, order: DESC }" sort_by: VibeAppSortInput, "If true, executes this operation with admin privileges (admin only)" as_admin: Boolean): [VibeApp!] "Get all user feedback for the current user" user_feedback_by_user( "Maximum number of feedback entries to return (default: 50)" limit: Int): [UserFeedback!] "Permissions for vibe related actions" permissions: VibePermissions "Get account's current Monday Vibe subscription data" subscription: VibeSubscription "Get count of vibe apps by status" apps_count(status: VibeAppStatus, "Search term for filtering apps" search_term: String, "Get counts for all apps in the account (not just user-created apps)." account_level: Boolean, "If true, executes this operation with admin privileges (admin only)" as_admin: Boolean): VibeAppCounts "Get count of vibe apps grouped by lifecycle state" apps_state_count( "Search term for filtering apps" search_term: String, "If true, executes this operation with admin privileges (admin only)" as_admin: Boolean): VibeAppStateCounts "Get chat messages for a vibe app. Returns messages in chronological order (oldest to newest)" chat_messages( "The ID of the vibe app" app_id: ID!, "Pagination options for fetching messages" pagination: ChatMessagePaginationInput = {limit: 10}): [ChatMessage!]! "Get all user requests for the current user" user_requests( "Filter requests by type" type: UserRequestKind, "Maximum number of requests to return" limit: Int, "Page number (1-based)" page: Int): [UserRequest!] "Check if a vibe app is published by appFeatureReferenceId" is_app_published( "The app feature reference id corresponding to the vibe app" app_feature_reference_id: ID, "The app feature reference id corresponding to the vibe app" app_id: ID): Boolean "Get the existence and publish status of a vibe app" app_publish_status( "The app feature reference id corresponding to the vibe app" app_feature_reference_id: ID, "The app id corresponding to the vibe app" app_id: ID): VibeAppPublishStatus "Get published community apps, optionally filtered by tags" published_community_apps( "Filter apps that contain all specified tags" tags: [String!], "Maximum number of apps to return (default 10, max 50)" limit: Int, "Field to sort results by (downloads or updated_at)" sort_by: PublishedCommunityAppsSortBy = DOWNLOADS, "Sort direction (ASC or DESC, default DESC)" sort_direction: SortOrder = DESC, "Free text search across title and description" text_search: String, "Zero-based page index for pagination. Returns results from page*limit to (page+1)*limit." page: Int): PublishedCommunityAppsResult "Get published community apps filtered by unique IDs" published_community_apps_by_id( "List of unique IDs to filter by" ids: [ID!]!): [SharedTemplate!] "Get the version token for the latest non-deleted version of a community app" get_version_token( "The unique ID of the template" template_id: ID!): String "Get the billing cycle start and end dates for the AI credits bucket of the current account" ai_credits_billing_cycle: BillingCycleDates "List of active curated inspirations for app creation" inspirations: [InspirationItem!] "List vibe assets. When app_id is provided, returns assets scoped to that app; otherwise returns all assets for the current account." assets( "Optional vibe app ID to scope assets to. Omit to list all account assets." app_id: ID): [VibeAsset!] "List of Vibe What's New entries" whats_new: [WhatsNewItem!] } "Sort direction for an order-by clause." enum VibeSortDir { ASC DESC } "A number of currently published apps and the maximum allowed limit" type VibeSubscription { "Current number of published apps" publishedApps: Int "Maximum number of published apps" maxPublishedApps: Int } "The variant/platform target for vibe apps" enum VibeVariant { BOARD_VIEW ITEM_VIEW VIBE_ITEM_VIEW OBJECT OBJECT_FULLSTACK } "Configuration for enabling web search in AI requests" input WebSearchConfigInput { "Whether web search is enabled for this request" allowed: Boolean! "Optional configuration for web search behavior" options: WebSearchOptionsInput } "Configuration options for web search functionality" input WebSearchOptionsInput { "Hint for max number of sources to consider (default: 5). Interpreted as guidance — the model decides retrieval breadth." topK: Int "Hint to prioritize content from the last N days. Interpreted as guidance — not a hard filter." recencyDays: Int } "A single entry from the Vibe What's New board" type WhatsNewItem { "Unique identifier of the What's New item (the board item id)" id: ID! "Headline of the What's New entry" title: String! "Publish date of the entry, as stored on the board" date: String "Rollout status of the feature (e.g. released, in progress)" release_status: String "Audience the entry is visible to" visibility: String "Category/type of the entry (e.g. feature, fix)" type: String "Full description of the entry" description: String "Short summary of the entry" short_description: String "Link target of the entry's call-to-action" announcement_url: String "Label of the entry's call-to-action" announcement_text: String "Monday asset id of the entry image, if any" image_asset_id: ID "Public CDN URL of the entry image" image_cdn_url: String "Public CDN URL of the entry video" video_cdn_url: String "Categories/tags associated with the entry" categories: [String!]! "Number of likes the entry has received" likes: Int "Whether this entry should appear in the initial loading carousel" show_in_loading_carousel: Boolean! } "A group of related boards in a workspace" type WorkspaceBoardGroup { "The IDs of the boards in this group" board_ids: [ID!] "The reasoning for grouping these boards together" reasoning: String } "The results of the search for benchmark." type SearchBenchmarkResults { data: String } "A role in the account" type AccountRole { "The ID of the role" id: ID "The name of the role" name: String "The type of the role" roleType: String } "Error that occurred during activation." type ActivateUsersError { "The error message." message: String "The error code." code: ActivateUsersErrorCode "The id of the user that caused the error." user_id: ID } "Error codes for activating users." enum ActivateUsersErrorCode { EXCEEDS_BATCH_LIMIT INVALID_INPUT USER_NOT_FOUND CANNOT_UPDATE_SELF FAILED } "Result of activating users." type ActivateUsersResult { "The users that were activated." activated_users: [User!] "Errors that occurred during activation." errors: [ActivateUsersError!] } "A monday.com agent." type Agent { "The ID of the agent." id: ID } "The level of access a user or team has for an agent." enum AgentMembershipRole { OWNER MEMBER } "A subscriber of an agent — a user or team with an assigned role." type AgentSubscriber { "The role assigned to the subscribed entity." role: AgentMembershipRole "Whether the subscribed entity is a user or a team." type: AgentSubscriberKind "The subscribed user or team." entity: AgentSubscriberEntity! } "The user or team subscribed to an agent." union AgentSubscriberEntity = User | Team "The type of entity subscribed to an agent." enum AgentSubscriberKind { USER TEAM } "The kind of API-app-backed user to create." enum ApiAppUserMappingKind { AGENT_MEMBER VIBE_USER } "Error that occurred while changing team owners." type AssignTeamOwnersError { "The error message." message: String "The error code." code: AssignTeamOwnersErrorCode "The id of the user that caused the error." user_id: ID } "Error codes that can occur while changing team owners." enum AssignTeamOwnersErrorCode { VIEWERS_OR_GUESTS USER_NOT_MEMBER_OF_TEAM EXCEEDS_BATCH_LIMIT INVALID_INPUT USER_NOT_FOUND CANNOT_UPDATE_SELF FAILED } "Result of changing the team's ownership." type AssignTeamOwnersResult { "The team for which the owners were changed." team: Team "Errors that occurred while changing team owners." errors: [AssignTeamOwnersError!] } "The role of the user." enum BaseRoleName { GUEST VIEW_ONLY MEMBER ADMIN } "The result of creating a service user." type CreateServiceUserResult { "The created service user." user: User } "Attributes of the team to be created." input CreateTeamAttributesInput { "The team's name." name: String! "Whether the team can contain guest users." is_guest_team: Boolean "The parent team identifier." parent_team_id: ID "The team members. Must not be empty, unless allow_empty_team is set." subscriber_ids: [ID!] } "Options for creating a team." input CreateTeamOptionsInput { "Whether to allow a team without any subscribers." allow_empty_team: Boolean } "Error that occurred during deactivation." type DeactivateUsersError { "The error message." message: String "The error code." code: DeactivateUsersErrorCode "The id of the user that caused the error." user_id: ID } "Error codes for deactivating users." enum DeactivateUsersErrorCode { EXCEEDS_BATCH_LIMIT INVALID_INPUT USER_NOT_FOUND CANNOT_UPDATE_SELF FAILED } "Result of deactivating users." type DeactivateUsersResult { "The users that were deactivated." deactivated_users: [User!] "Errors that occurred during deactivation." errors: [DeactivateUsersError!] } "Error that occurred while inviting users" type InviteUsersError { "The error message." message: String "The error code." code: InviteUsersErrorCode "The email address for the user that caused the error." email: ID } "Error codes that can occur while changing email domain." enum InviteUsersErrorCode { ERROR } "Result of inviting users to the account." type InviteUsersResult { "The users that were successfully invited." invited_users: [User!] "Errors that occurred while inviting users" errors: [InviteUsersError!] } "The product to invite the users to." enum Product { work_management crm dev service whiteboard knowledge forms workflows } "Error that occurred while removing team owners." type RemoveTeamOwnersError { "The error message." message: String "The error code." code: RemoveTeamOwnersErrorCode "The id of the user that caused the error." user_id: ID } "Error codes that can occur while removing team owners." enum RemoveTeamOwnersErrorCode { VIEWERS_OR_GUESTS USER_NOT_MEMBER_OF_TEAM EXCEEDS_BATCH_LIMIT INVALID_INPUT USER_NOT_FOUND CANNOT_UPDATE_SELF FAILED } "Result of removing the team's ownership." type RemoveTeamOwnersResult { "The team for which the owners were removed." team: Team "Errors that occurred while removing team owners." 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 "Whether the service user currently has an active API token." has_token: Boolean } "A service user token result." type ServiceUserToken { "The ID of the service user." service_user_id: ID "The API token." token: String } "Result of the subscribe_teams_to_agent mutation." type SubscribeTeamsToAgentResult { "Whether all teams were successfully subscribed to the agent." is_successful: Boolean } "Result of the subscribe_users_to_agent mutation." type SubscribeUsersToAgentResult { "Whether all users were successfully subscribed to the agent." is_successful: Boolean } "Result of the unsubscribe_teams_from_agent mutation." type UnsubscribeTeamsFromAgentResult { "Whether all teams were successfully unsubscribed from the agent." is_successful: Boolean } "Result of the unsubscribe_users_from_agent mutation." type UnsubscribeUsersFromAgentResult { "Whether all users were successfully unsubscribed from the agent." is_successful: Boolean } "Attributes of the email domain to be updated." input UpdateEmailDomainAttributesInput { "The user identifiers (max 200)" user_ids: [ID!]! "The new email domain." new_domain: String! } "Error that occurred while changing email domain." type UpdateEmailDomainError { "The error message." message: String "The error code." code: UpdateEmailDomainErrorCode "The id of the user that caused the error." user_id: ID } "Error codes that can occur while changing email domain." enum UpdateEmailDomainErrorCode { UPDATE_EMAIL_DOMAIN_ERROR EXCEEDS_BATCH_LIMIT INVALID_INPUT USER_NOT_FOUND CANNOT_UPDATE_SELF FAILED } "Result of updating the email domain for the specified users." type UpdateEmailDomainResult { "The users for which the email domain was updated." updated_users: [User!] "Errors that occurred during the update." errors: [UpdateEmailDomainError!] } "Error that occurred while updating users attributes." type UpdateUserAttributesError { "The error message." message: String "The error code." code: UpdateUserAttributesErrorCode "The id of the user that caused the error." user_id: ID } "Error codes that can occur while updating user attributes." enum UpdateUserAttributesErrorCode { INVALID_FIELD } "The result of updating users attributes." type UpdateUserAttributesResult { "The users that were updated." updated_users: [User!] "Errors that occurred during the update." errors: [UpdateUserAttributesError!] } "Error that occurred during updating users role." type UpdateUsersRoleError { "The error message." message: String "The error code." code: UpdateUsersRoleErrorCode "The id of the user that caused the error." user_id: ID } "Error codes for updating users roles." enum UpdateUsersRoleErrorCode { EXCEEDS_BATCH_LIMIT INVALID_INPUT USER_NOT_FOUND CANNOT_UPDATE_SELF FAILED } "Result of updating users role." type UpdateUsersRoleResult { "The users that were updated." updated_users: [User!] "Errors that occurred during updating users role." errors: [UpdateUsersRoleError!] } "The attributes to update for a user." input UserAttributesInput { "The birthday of the user." birthday: String "The email of the user." email: String "The join date of the user." join_date: String "The name of the user." name: String "The location of the user." location: String "The mobile phone of the user." mobile_phone: String "The phone of the user." phone: String "The title of the user." title: String "The department of the user." department: String } "The role of the user." enum UserRole { GUEST VIEW_ONLY MEMBER ADMIN } input UserUpdateInput { user_id: ID! user_attribute_updates: UserAttributesInput! } type ConnectProjectResult { "Indicates if the operation was successful." success: Boolean "A message describing the result of the operation." message: String "The ID of the created portfolio item, if successful." portfolio_item_id: String } type CreatePortfolioResult { "The ID of the solution that was created" solution_live_version_id: String "Indicates if the operation was successful." success: Boolean "A message describing the result of the operation." message: String } "Preview information for a board in the Magic solution." type BoardPreview { "The unique identifier of the board." id: ID "The name of the board." name: String "List of column ids in the board." column_ids: [ID!] } "Configuration for which building blocks to include in the Magic solution." input BuildConfigInput { "List of building block types to include or exclude based on filter_mode." types: [BuildingBlock!]! = [DOMAIN,BOARD,DASHBOARD,FORM,ITEMS,AUTOMATIONS,VIBE,AGENT] "How to interpret the types list: ALLOW_ONLY includes only specified types, EXCLUDE creates all except specified." filter_mode: FilterMode = ALLOW_ONLY "Additional settings for configuring the build behavior." settings: BuildSettingsInput "Optional limits on how many entities of each type can be created." max_entities_per_type: MaxEntitiesPerTypeInput } "Additional settings for configuring the Magic solution build behavior." input BuildSettingsInput { "Whether to enhance boards with AI-powered columns. Defaults to false." support_ai_columns: Boolean = false } "Types of building blocks that can be created in a Magic solution." enum BuildingBlock { DOMAIN BOARD DASHBOARD FORM ITEMS AUTOMATIONS VIBE AGENT } "Response payload for the create_magic_solution mutation." type CreateMagicSolutionPayload { "The session identifier for the Magic solution." session_id: ID "The unique identifier for this async operation." operation_id: ID "The current status of the operation." status: OperationStatus "ISO 8601 timestamp when the operation was queued." queued_at: String "Preview of the solution structure." structure_preview: StructurePreview "URL to access the Magic solution directly. Can be shared with users to view the solution." magic_link: String "Optional list of errors for files that failed to process." files_errors: [MagicSolutionFileError!] } "Preview of a dashboard that will be created in the Magic solution." type DashboardPreview { "The unique identifier of the dashboard." id: ID "The name of the dashboard." name: String } "Determines how the building block types list is interpreted." enum FilterMode { ALLOW_ONLY EXCLUDE } "Preview of a form that will be created in the Magic solution." type FormPreview { "The ID of the board associated with this form." board_id: ID "The ID of the form view." form_view_id: ID "The name of the form." name: String } "Configuration for internal microservice callback. Used for service-to-service communication." input InternalCallbackInput { "The name of the internal Monday service to call." service_name: String! "The path/endpoint on the service to call." path: String! } "The Monday.com product kind for the magic solution." enum MagicProductKind { CORE MARKETING CRM SOFTWARE SERVICE } "Details about a file that failed to process." type MagicSolutionFileError { "The file URL that failed to process." url: String "Optional file name override provided by the caller." name: String "Optional MIME type override provided by the caller." mime_type: String "Error message describing why the file failed to process." message: String } "File entry to attach to the Magic solution context." input MagicSolutionFileInput { "HTTPS URL of the file to attach." url: String! "Optional file name override." name: String "Optional MIME type override." mime_type: String } "Optional limits on how many entities of each type can be created." input MaxEntitiesPerTypeInput { "Maximum number of boards to create." boards: Int "Maximum number of dashboards to create." dashboards: Int } "Configuration for internal microservice callback. Used for service-to-service communication." input ModifyMagicSolutionInternalCallbackInput { "The name of the internal Monday service to call." service_name: String! "The path/endpoint on the service to call." path: String! } "Response payload for the modify_magic_solution mutation." type ModifyMagicSolutionPayload { "The session identifier for the Magic solution." session_id: ID "The current status of the operation." status: OperationStatus "Preview of the updated solution structure. Available when status is COMPLETED." structure_preview: StructurePreview "ISO 8601 timestamp when the operation was queued. Only present in async mode." queued_at: String "The agent response message. Available when status is COMPLETED." message: String } "The current status of an asynchronous Magic solution operation." enum OperationStatus { QUEUED PROCESSING COMPLETED FAILED SESSION_PENDING } "Preview of the Magic solution structure including boards, dashboards, forms and metadata." type StructurePreview { "The name of the product or solution being created." product_name: String "The ID of the workspace where the solution is created." workspace_id: ID "List of boards that will be created in the solution." boards: [BoardPreview!] "List of dashboards that will be created in the solution." dashboards: [DashboardPreview!] "List of forms that will be created in the solution." forms: [FormPreview!] "The folder ID where the solution is organized. Available after creation completes." folder_id: ID "Link to install the app (sandbox accounts only). Available after creation completes." install_link: String "Link to sign up for the app (sandbox accounts only). Available after creation completes." signup_link: String "Link to the workspace (tenant accounts only). Available after creation completes." workspace_link: String } "A file uploaded to a Magic thread session, with a presigned download URL." type UploadedFile { "Artifact id for the uploaded file." id: ID "Original file name." original_name: String "Detected MIME type." mime_type: String "File size in bytes." size_bytes: Int "ISO timestamp when the file was stored." created_at: String "ISO timestamp when text extraction completed (if applicable)." extracted_at: String "Presigned URL for downloading the file." url: String } "Valid cutoff points in the workflow where synchronous execution stops and async continuation begins." enum WorkflowCutoffNode { IMMEDIATELY DISCOVERY PLANNING STRUCTURE_CREATION CONTENT_CREATION } type AppType { "The API app ID" api_app_id: ID id: ID! created_at: Date updated_at: Date "The app name" name: String "The client ID used to identify the app for OAuth and API access" client_id: String "The app photo URL" photo_url: String "The app photo URL for small size" photo_url_small: String "The app kind" kind: AppKind "The app status (i.e. is live?)" status: AppStatus "The latest version type" version_type: String "The description of the app" description: String "The URL-friendly identifier" slug: String "The array of permission scopes" permissions: [String!] "The webhook endpoint URL" webhook_url: String "The user who created the app" created_by: ID "The app account ID" account_id: ID "The app collaborators" collaborators: [User!] "The apps' features" features( "Number of items to get, the default is 25." limit: Int = 25, "Page number to get, starting at 1." page: Int = 1): [AppFeatureType!] } "API usage data." type DailyAnalytics { "Last time the API usage data was updated." last_updated: ISO8601DateTime "API usage per day." by_day: [PlatformApiDailyAnalyticsByDay!] "API usage per app." by_app: [PlatformApiDailyAnalyticsByApp!] "API usage per user." by_user: [PlatformApiDailyAnalyticsByUser!] } "Platform API daily limit." type DailyLimit { "Base daily limit." base: Int "Total daily limit." total: Int } "Platform API daily-limit add-on details." type DailyLimitAddon { "Whether the account owns an active daily-limit add-on." is_active: Boolean! "Number of daily-limit add-on units the account owns." quantity: Int! } "The Platform API's data." type PlatformApi { "Platform API daily limit." daily_limit: DailyLimit "API analytics." daily_analytics: DailyAnalytics } "API usage per app." type PlatformApiDailyAnalyticsByApp { "Application." app: AppType "API usage for the app." usage: Int! "API app id" api_app_id: ID! } "API usage per day." type PlatformApiDailyAnalyticsByDay { "Day." day: String! "API usage for the day." usage: Int! } "API usage per user." type PlatformApiDailyAnalyticsByUser { "User." user: User "API usage for the user." usage: Int! } "The result of the connect_migration_job mutation." type ConnectMigrationJobResult { "Whether the connection was successfully created or already exists." success: Boolean "The unique identifier of the migration job connection." migrationJobConnectionId: ID } type CreateEntitySnapshotResult { "The unique identifier of the snapshot." snapshotId: ID! "The date and time the snapshot was created." createdAt: String! "The entity that was snapshot." entity: String! "The unique identifier of the migration job." migrationJobId: String! } type CreateMigrationJobResult { "The unique identifier of the migration job." id: ID! } "The result of deleting entity ID mappings." type DeleteEntityIdMappingsResult { "Whether the delete operation was successful." success: Boolean "The number of mappings that were deleted." count: Int } "Input type for entity ID mapping." input EntityIdMappingInput { "The old ID of the entity." oldId: String! "The new ID of the entity." newId: String! } type GetEntitiesForMigrationResult { "The entities for migration." entityId: String } "The result of querying entity restores." type GetRestoresQueryResults { "The unique identifier of the restore." id: ID! "The date and time the restore was created." createdAt: String! "The entity id of the restore." entityId: String! "The unique identifier of the migration job." migrationJobId: String! "The status of the restore." status: RestoreStatus! "Progress counters for the restore operation." progress: MigrationProgress } type GetSnapshotsQueryResults { "The unique identifier of the snapshot." id: ID! "The date and time the snapshot was created." createdAt: String! "The entity id of the snapshot." entityId: String! "The unique identifier of the migration job." migrationJobId: String! "The status of the snapshot." status: SnapshotStatus! "Progress counters for the snapshot operation." progress: MigrationProgress } type MigratedEntityIdMappingsResult { "The entity type of migrated entities." entityType: String "The old ID of the migrated entity." oldId: String "The new ID of the migrated entity." newId: String } "Progress counters for a snapshot or restore operation." type MigrationProgress { "Live progress counters. Present only while the operation is in progress." ongoing: OngoingProgress "Final progress result. Present only after the operation completes." result: ProgressResult } "Live progress counters for an in-progress migration operation." type OngoingProgress { "The total number of entities to process." total: Int! "The number of entities currently being processed." processing: Int! "The number of entities successfully processed." success: Int! "The number of entities that failed processing." failed: Int! "Number of components excluded from migration." excluded: Int! "List of nodes currently being processed." currently_processing: [ProcessingNode!]! } "A node currently being processed in a migration operation." type ProcessingNode { "The component type, e.g. BoardPosts, BoardPermissions." type: String! "The unique identifier of the entity being processed." id: ID! "ISO timestamp when processing began." started_at: String } "Final progress result for a completed migration operation." type ProgressResult { "The total number of entities processed." total: Int! "The number of entities successfully processed." success: Int! "The number of entities that failed processing." failed: Int! "Number of components excluded from migration." excluded: Int! "The full manifest JSON with per-component summary baked in." raw_manifest: JSON! } "The result of the restore entity mutation." type RestoreEntityResult { "Confirms the restore request was accepted." 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 { pending processing success failed rollback } "Result of a restore rollback operation." type RollbackRestoreMutationResult { "The unique identifier of the restore." restore_id: ID! "The new status of the restore (rollback)." status: RestoreStatus! } "Result of a snapshot rollback operation." type RollbackSnapshotMutationResult { "The unique identifier of the snapshot." snapshot_id: ID! "The new status of the snapshot (rollback)." 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 { pending processing success failed rollback } "A board that can be snapshotted, with metadata and relations." type SnapshottableBoard { "The board ID." id: ID "The board name." name: String "The board owner user ID." owner: ID "The workspace ID this board belongs to." workspace_id: ID "Whether this board is a document." is_doc: Boolean "Whether this board is a managed template instance." is_managed_template_instance: Boolean "Related boards by relation type. Limited to 1 level of depth." board_relations( """ The relation type: "BoardRelation" or "SubtasksBoard". """ relation_type: String!): [SnapshottableBoard!] } "A paginated connection of snapshottable boards." type SnapshottableBoardConnection { "The list of boards in this page." items: [SnapshottableBoard!] "The cursor for the next page." cursor: String "Whether there are more pages." has_next_page: Boolean } "An overview that can be snapshotted, with connected boards." type SnapshottableOverview { "The overview ID." id: ID "Boards connected to this overview." connected_boards: [SnapshottableBoard!] } "A paginated connection of snapshottable overviews." type SnapshottableOverviewConnection { "The list of overviews in this page." items: [SnapshottableOverview!] "The cursor for the next page." cursor: String "Whether there are more pages." has_next_page: Boolean } "A workspace that can be snapshotted, with paginated boards and overviews." type SnapshottableWorkspace { "The workspace ID." id: ID "The workspace name." name: String "The workspace owner user ID." owner: ID "Paginated boards in this workspace." boards( "Cursor for pagination." cursor: String): SnapshottableBoardConnection "Paginated overviews in this workspace." overviews( "Cursor for pagination." cursor: String): SnapshottableOverviewConnection } "The result of upserting entity ID mappings." type UpsertEntityIdMappingsResult { "Whether the upsert operation was successful." success: Boolean "The number of mappings that were upserted." count: Int } "Input for a group of validation rules with a logical operator" input GroupInput { "The group operator" operator: GroupOperator = AND "The group configuration" groups: [RuleConstraintInput!]! } "The operator for the group" enum GroupOperator { AND OR } "List of required column IDs for a board" type RequiredColumns { "Array of required column IDs" required_column_ids: [String!]! } "Input for a single validation rule constraint with operator and definition" input RuleConstraintInput { "The validation operator" operator: RuleOperator! "The column ID" column_id: String! "The compare values (array of strings or numbers)" compare_value: [CompareValue!] "The compare attribute" compare_attribute: String } "Available operators for validation rules" enum RuleOperator { ANY_OF NOT_ANY_OF EQUALS NOT_EQUALS IS_EMPTY IS_NOT_EMPTY GREATER_THAN GREATER_THAN_OR_EQUALS LOWER_THAN LOWER_THAN_OR_EQUAL CONTAINS_TEXT NOT_CONTAINS_TEXT STARTS_WITH_TEXT BETWEEN } "A validation rule with then and optional if conditions" type ValidationRule { "The unique identifier of the validation rule" id: ID "The force condition group" then: JSON "The optional if condition group" if: JSON } "Input for creating a validation rule with then and optional if conditions" input ValidationRuleInput { "The conditions that must be enforced when the rule applies" then: GroupInput! "Optional conditions that determine if the rule should be applied" if: GroupInput } type Validations { "Array of required column IDs" required_column_ids: [String!] "Validation rules" rules: JSON } enum ValidationsEntityType { board } "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 { PUBLIC PRIVATE SHAREABLE } "Identifiers for a published workflow" type WorkflowBuilderPublishResult { "Stable workflow entity ID" workflow_object_id: ID "Live workflow ID after promotion" workflow_live_id: ID } "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 } enum Action { DESTROY SHOW CREATE UPDATE } "Logical operator for combining rules or conditions. Must be OR — the question is shown if any rule or condition is satisfied." enum ConditionOperator { OR } "Answer for a country question." input CountryAnswerInput { """ The full country name (e.g. "United States"). """ country_name: String! """ The ISO 3166-1 alpha-2 country code (e.g. "US"). """ country_code: String! } input CreateFormTagInput { "The name of the tag. Must be unique within the form and not reserved." name: String! "The value of the tag" value: String } input CreateQuestionInput { """ The question type determining input behavior and validation (e.g., "text", "email", "single_select", "multi_select"). """ type: FormQuestionType! "Optional explanatory text providing additional context, instructions, or examples for the question." description: String "Boolean controlling question visibility to respondents. Hidden questions remain in form structure but are not displayed." visible: Boolean = true "Boolean indicating if the question must be answered before form submission." required: Boolean "Question-specific configuration object that varies by question type." settings: FormQuestionSettingsInput "The question text displayed to respondents. Must be at least 1 character long and clearly indicate the expected response." title: String! "Array of option objects for choice-based questions (single_select, multi_select). Required for select types." options: [QuestionOptionInput!] } "Answer for a date question." input DateAnswerInput { "The date in YYYY-MM-DD format." date: String! "UTC offset in minutes." zone_diff: Int } "Answer for a date range question." input DateRangeAnswerInput { "Start date in YYYY-MM-DD format." from: String! "End date in YYYY-MM-DD format." to: String! } type DehydratedFormResponse { "The board ID connected to the form. Used to store form responses as items." boardId: ID! "The unique identifier token for the form. Required for all form-specific operations." token: String! } input DeleteFormTagInput { "Options for deleting the tag" deleteAssociatedColumn: Boolean } "A single uploaded file answer." input FileAnswerInput { "The file ID returned by the workforms upload endpoint." id: String! """ Original file name (e.g. "image.png"). """ name: String! """ File extension (e.g. "pdf"). """ extension: String "Whether the file is an image." is_image: Boolean } "Object containing accessibility options such as language, alt text, etc." type FormAccessibility { """ Language code for form localization and interface text (e.g., "en", "es", "fr"). """ language: String "Alternative text description for the logo image for accessibility." logoAltText: String } "Accessibility configuration including language and reading direction." input FormAccessibilityInput { """ Language code for form localization and interface text (e.g., "en", "es", "fr"). """ language: String "Alternative text description for the logo image for accessibility." logoAltText: String } type FormAfterSubmissionView { "Text displayed as the title after successful form submission." title: String "Text shown to users after they complete the form." description: String "Object containing redirect configuration after form submission." redirectAfterSubmission: FormRedirectAfterSubmission "Boolean allowing users to submit multiple responses to the same form." allowResubmit: Boolean! "Boolean displaying a success image after form completion." showSuccessImage: Boolean! "Boolean allowing users to modify their submitted responses after submission." allowEditSubmission: Boolean! "Boolean allowing users to view their submitted responses." allowViewSubmission: Boolean! } "Object containing settings for the post-submission user experience." input FormAfterSubmissionViewInput { "Text displayed as the title after successful form submission." title: String "Text shown to users after they complete the form." description: String "Object containing redirect configuration after form submission." redirectAfterSubmission: FormRedirectAfterSubmissionInput "Boolean allowing users to submit multiple responses to the same form." allowResubmit: Boolean "Boolean displaying a success image after form completion." showSuccessImage: Boolean "Boolean allowing users to modify their submitted responses after submission." allowEditSubmission: Boolean "Boolean allowing users to view their submitted responses." allowViewSubmission: Boolean } "Object containing AI translation configuration for the form." type FormAiTranslate { "Boolean enabling AI translation for the form." enabled: Boolean! } "Object containing AI translation configuration for the form." input FormAiTranslateInput { "Boolean enabling AI translation for the form." enabled: Boolean } enum FormAlignment { FullLeft Left Center Right FullRight } "An answer to a single form question. Set question_id and exactly one answer field matching the question type." input FormAnswerInput { "The ID of the question being answered." question_id: ID! "Answer for name questions." name: String "Answer for email questions." email: String "Answer for short text questions." short_text: String "Answer for long text questions." long_text: String "Answer for link questions." link: String "Answer for updates questions." updates: String "Answer for boolean questions." boolean: Boolean "Answer for number questions." number: Float "Answer for rating questions." rating: Float "Answer for single-select questions — the selected option ID." single_select: String "Answer for multi-select questions — list of selected option IDs." multi_select: [Int!] "Answer for phone questions." phone: PhoneAnswerInput "Answer for country questions." country: CountryAnswerInput "Answer for date questions." date: DateAnswerInput "Answer for date range questions." date_range: DateRangeAnswerInput "Answer for hour questions." hour: HourAnswerInput "Answer for location questions." location: LocationAnswerInput "Answer for file questions — list of uploaded files." file: [FileAnswerInput!] "Answer for signature questions — a single uploaded file." signature: FileAnswerInput "Answer for people questions — list of user IDs." people: [ID!] "Answer for connected boards questions — list of connected item IDs." connected_boards: [ID!] "Answer for subitems questions — each subitem is its own set of answers." subitems: [SubitemAnswerInput!] } "Object containing visual styling including colors, layout, fonts, and branding elements." type FormAppearance { "Boolean hiding monday branding from the form display." hideBranding: Boolean! "Boolean displaying a progress indicator showing form completion progress bar." showProgressBar: Boolean! "Hex color code for the primary theme color used throughout the form." primaryColor: String "Object containing form structure and presentation settings." layout: FormLayout "Object containing background appearance configuration for the form." background: FormBackground "Object containing typography and text styling configuration." text: FormText "Object containing logo display configuration for form branding." logo: FormLogo "Object containing submit button styling and text configuration." submitButton: FormSubmitButton } "Visual styling configuration including colors, layout, and branding." input FormAppearanceInput { "Boolean hiding monday branding from the form display." hideBranding: Boolean "Boolean displaying a progress indicator showing form completion progress bar." showProgressBar: Boolean "Hex color code for the primary theme color used throughout the form." primaryColor: String "Object containing form structure and presentation settings." layout: FormLayoutInput "Object containing background appearance configuration for the form." background: FormBackgroundInput "Object containing typography and text styling configuration." text: FormTextInput "Object containing logo display configuration for form branding." logo: FormLogoInput "Object containing submit button styling and text configuration." submitButton: FormSubmitButtonInput } "Object containing background appearance configuration for the form." type FormBackground { "String specifying background style." type: FormBackgrounds "String containing the background value. The value will depend on the background type. If the background type is color, the value will be a hex color code. If the background type is image, the value will be an image URL." value: String } "Object containing background appearance configuration for the form." input FormBackgroundInput { "String specifying background style." type: FormBackgrounds! "String containing the background value. The value will depend on the background type. If the background type is color, the value will be a hex color code. If the background type is image, the value will be an image URL." value: String } enum FormBackgrounds { Image Color None } type FormCloseDate { "Boolean enabling automatic form closure at a specified date and time." enabled: Boolean! "ISO timestamp when the form will automatically stop accepting responses." date: String } "Object containing automatic form closure configuration." input FormCloseDateInput { "Boolean enabling automatic form closure at a specified date and time." enabled: Boolean "ISO timestamp when the form will automatically stop accepting responses." date: String } enum FormDirection { LtR Rtl } type FormDraftSubmission { "Boolean allowing users to save incomplete responses as drafts." enabled: Boolean! } "Object containing draft saving configuration allowing users to save progress." input FormDraftSubmissionInput { "Boolean allowing users to save incomplete responses as drafts." enabled: Boolean } "Object containing form features including but not limited to password protection, response limits, login requirements, etc." type FormFeatures { "Boolean indicating if the form is restricted to internal users only." isInternal: Boolean! "Boolean enabling reCAPTCHA verification to prevent spam submissions." reCaptchaChallenge: Boolean! "Object containing shortened URL configuration for easy form sharing." shortenedLink: FormShortenedLink "Object containing password protection configuration for the form." password: FormPassword "Object containing draft saving configuration allowing users to save progress." draftSubmission: FormDraftSubmission "Object containing login requirement settings for form access." requireLogin: FormRequireLogin "Object containing response limitation settings to control submission volume." responseLimit: FormResponseLimit "Object containing automatic form closure configuration." closeDate: FormCloseDate "Object containing welcome screen configuration displayed before the form." preSubmissionView: FormPreSubmissionView "Object containing settings for the post-submission user experience." afterSubmissionView: FormAfterSubmissionView "Object containing board settings for response handling." monday: FormMonday } "Form features configuration including security, limits, and access controls." input FormFeaturesInput { "Boolean enabling reCAPTCHA verification to prevent spam submissions." reCaptchaChallenge: Boolean "Object containing draft saving configuration allowing users to save progress." draftSubmission: FormDraftSubmissionInput "Object containing login requirement settings for form access." requireLogin: FormRequireLoginInput "Object containing response limitation settings to control submission volume." responseLimit: FormResponseLimitInput "Object containing automatic form closure configuration." closeDate: FormCloseDateInput "Object containing welcome screen configuration displayed before the form." preSubmissionView: FormPreSubmissionViewInput "Object containing settings for the post-submission user experience." afterSubmissionView: FormAfterSubmissionViewInput "Object containing board settings for response handling." monday: FormMondayInput "Object containing password protection configuration for the form." password: FormPasswordInput } enum FormFontSize { Small Medium Large } "String specifying the form display format. Can be a step by step form or a classic one page form." enum FormFormat { OneByOne Classic } "Object containing form structure and presentation settings." type FormLayout { "String specifying the form display format. Can be a step by step form or a classic one page form." format: FormFormat "String controlling text and content alignment." alignment: FormAlignment "String setting reading direction." direction: FormDirection } "Object containing form structure and presentation settings." input FormLayoutInput { "String specifying the form display format. Can be a step by step form or a classic one page form." format: FormFormat "String controlling text and content alignment." alignment: FormAlignment "String setting reading direction." direction: FormDirection } "The layout style of the form (Card or Flat)." enum FormLayoutStyle { CARD FLAT } "Object containing logo display configuration for form branding." type FormLogo { """ String specifying logo placement ("top", "bottom", "header"). """ position: FormLogoPosition "URL pointing to the logo image file for display on the form." url: String """ String specifying logo size ("small", "medium", "large") for the logo that appears on the header of the form. """ size: FormLogoSize } "Object containing logo display configuration for form branding." input FormLogoInput { """ String specifying logo placement ("top", "bottom", "header"). """ position: FormLogoPosition """ String specifying logo size ("small", "medium", "large") for the logo that appears on the header of the form. """ size: FormLogoSize } enum FormLogoPosition { Auto Left Center Right } "Available logo sizes for form branding" enum FormLogoSize { Small Medium Large ExtraLarge } type FormMonday { "The board group ID where new items from form responses will be created." itemGroupId: String "Boolean adding a name question to the form. This is a special question type that represents the name column from the associated monday board" includeNameQuestion: Boolean! "Boolean adding an update/comment field to the form. This is a special question type that represents the updates from the associated item of the submission on the monday board." includeUpdateQuestion: Boolean! "Boolean synchronizing form question titles with board column names. When true, the form question titles will be synchronized with the board column names." syncQuestionAndColumnsTitles: Boolean! } "Object containing board settings for response handling." input FormMondayInput { "The board group ID where new items from form responses will be created." itemGroupId: String "Boolean adding a name question to the form. This is a special question type that represents the name column from the associated monday board" includeNameQuestion: Boolean "Boolean adding an update/comment field to the form. This is a special question type that represents the updates from the associated item of the submission on the monday board." includeUpdateQuestion: Boolean "Boolean synchronizing form question titles with board column names. When true, the form question titles will be synchronized with the board column names." syncQuestionAndColumnsTitles: Boolean } type FormPassword { "Boolean disabling password protection. Can only be updated to false, to enable password protection, use the set_form_password mutation instead." enabled: Boolean! } "Password configuration for the form. Only setting enabled to false is supported. To enable a form to be password protected, please use the set_form_password mutation instead." input FormPasswordInput { "Boolean disabling password protection. Can only be updated to false, to enable password protection, use the set_form_password mutation instead." enabled: Boolean } type FormPreSubmissionView { "Boolean showing a welcome/introduction screen before the form begins." enabled: Boolean! "Text displayed as the title on the welcome screen." title: String "Text providing context or instructions on the welcome screen." description: String "Object containing start button configuration for the welcome screen." startButton: FormStartButton } "Object containing welcome screen configuration displayed before the form." input FormPreSubmissionViewInput { "Boolean showing a welcome/introduction screen before the form begins." enabled: Boolean "Text displayed as the title on the welcome screen." title: String "Text providing context or instructions on the welcome screen." description: String "Object containing start button configuration for the welcome screen." startButton: FormStartButtonInput } type FormQuestion { "The unique identifier for the question. Used to target specific questions within a form." id: String! """ The question type determining input behavior and validation (e.g., "text", "email", "single_select", "multi_select"). """ type: FormQuestionType "Boolean controlling question visibility to respondents. Hidden questions remain in form structure but are not displayed." visible: Boolean! "The question text displayed to respondents. Must be at least 1 character long and clearly indicate the expected response." title: String! "Optional explanatory text providing additional context, instructions, or examples for the question." description: String "Boolean indicating if the question must be answered before form submission." required: Boolean! settings: FormQuestionSettings options: [FormQuestionOption!] "Conditional logic rules that control when this question is displayed based on other question answers." showIfRules: JSON } type FormQuestionOption { "The display text for individual option choices in select-type questions." label: String! } "Account data lookups for prefilling question values" enum FormQuestionPrefillAccountLookups { Email Name Title Phone FirstName LastName Location Timezone ManagerName } "Sources for prefilling question values" enum FormQuestionPrefillSources { Account QueryParam } "Display options for select-type questions" enum FormQuestionSelectDisplay { Horizontal Vertical Dropdown } "Ordering options for select question options" enum FormQuestionSelectOrderByOptions { Alphabetical Random Custom } "Question-specific configuration object that varies by question type." type FormQuestionSettings { "Configuration for automatically populating question values from various data sources such as user account information or URL query parameters." prefill: PrefillSettings "Phone questions only: Automatically detect and fill the phone country prefix based on the user's geographic location or browser settings." prefixAutofilled: Boolean "Phone questions only: Configuration for setting a specific predefined phone country prefix that will be pre-selected for users." prefixPredefined: PhonePrefixPredefined "Boolean/checkbox questions only: Whether the checkbox should be checked by default when the form loads." checkedByDefault: Boolean "Date based questions only: Automatically set the current date as the default value when the form loads." defaultCurrentDate: Boolean "Date questions only: Whether to include time selection (hours and minutes) in addition to the date picker. When false, only date selection is available." includeTime: Boolean "Single/Multi Select questions only: Controls how the selection options are visually presented to users." display: FormQuestionSelectDisplay "Single/Multi Select questions only: Determines the ordering of selection options." optionsOrder: FormQuestionSelectOrderByOptions "Location questions only: Automatically detect and fill the user's current location using browser geolocation services, requiring user permission." locationAutofilled: Boolean "Rating questions only: Maximum rating value that users can select." limit: Int "Link/URL questions only: Whether to skip URL format validation, allowing any text input." skipValidation: Boolean } "Question-specific configuration object that varies by question type." input FormQuestionSettingsInput { "Configuration for automatically populating question values from various data sources such as user account information or URL query parameters." prefill: PrefillSettingsInput "Phone questions only: Automatically detect and fill the phone country prefix based on the user's geographic location or browser settings." prefixAutofilled: Boolean "Phone questions only: Configuration for setting a specific predefined phone country prefix that will be pre-selected for users." prefixPredefined: PhonePrefixPredefinedInput "Boolean/checkbox questions only: Whether the checkbox should be checked by default when the form loads." checkedByDefault: Boolean "Date based questions only: Automatically set the current date as the default value when the form loads." defaultCurrentDate: Boolean "Date questions only: Whether to include time selection (hours and minutes) in addition to the date picker. When false, only date selection is available." includeTime: Boolean "Single/Multi Select questions only: Controls how the selection options are visually presented to users." display: FormQuestionSelectDisplay "Single/Multi Select questions only: Determines the ordering of selection options." optionsOrder: FormQuestionSelectOrderByOptions "Multi Select questions only: Limits the number of options a user can select." labelLimitCount: Int "Location questions only: Automatically detect and fill the user's current location using browser geolocation services, requiring user permission." locationAutofilled: Boolean "Link/URL questions only: Whether to skip URL format validation, allowing any text input." skipValidation: Boolean } "The type of the question (ex. text, number, MultiSelect etc.)" enum FormQuestionType { Boolean ConnectedBoards Country Date DateRange Email File Link Location LongText MultiSelect Name Number People Phone Rating ShortText Signature SingleSelect Subitems Updates } type FormRedirectAfterSubmission { "Boolean enabling automatic redirect after form completion to a specified URL." enabled: Boolean! "The URL where users will be redirected after successfully submitting the form." redirectUrl: String } "Object containing redirect configuration after form submission." input FormRedirectAfterSubmissionInput { "Boolean enabling automatic redirect after form completion to a specified URL." enabled: Boolean "The URL where users will be redirected after successfully submitting the form." redirectUrl: String } type FormRequireLogin { "Boolean requiring users to be logged in before submitting responses." enabled: Boolean! "Boolean automatically redirecting unauthenticated users to the login page." redirectToLogin: Boolean! } "Object containing login requirement settings for form access." input FormRequireLoginInput { "Boolean requiring users to be logged in before submitting responses." enabled: Boolean "Boolean automatically redirecting unauthenticated users to the login page." redirectToLogin: Boolean } type FormResponseLimit { "Boolean enabling response count limits for the form." enabled: Boolean! "Integer specifying the maximum number of responses allowed." limit: Int } "Object containing response limitation settings to control submission volume." input FormResponseLimitInput { "Boolean enabling response count limits for the form." enabled: Boolean "Integer specifying the maximum number of responses allowed." limit: Int } type FormShortenedLink { "Boolean enabling generation of shortened URLs for the form." enabled: Boolean! "The generated shortened URL for form access. Only available when shortened links are enabled." url: String } type FormStartButton { "Custom text for the button that begins the form experience." text: String } "Object containing start button configuration for the welcome screen." input FormStartButtonInput { "Custom text for the button that begins the form experience." text: String } "The result of a successful form submission." type FormSubmissionResult { "The unique identifier of the created submission." id: ID! } "Object containing submit button styling and text configuration." type FormSubmitButton { "Custom text displayed on the form submission button." text: String } "Object containing submit button styling and text configuration." input FormSubmitButtonInput { "Custom text displayed on the form submission button." text: String } type FormTag { "The unique identifier for the tag" id: String! "The name of the tag" name: String! "The value of the tag" value: String "The ID of the column this tag is associated with" columnId: String! } "Object containing typography and text styling configuration." type FormText { "String specifying the font family used throughout the form." font: String "Hex color code for the text color in the form." color: String "String or number specifying the base font size for form text." size: FormFontSize } "Object containing typography and text styling configuration." input FormTextInput { "String specifying the font family used throughout the form." font: String "Hex color code for the text color in the form." color: String "String or number specifying the base font size for form text." size: FormFontSize } "Answer for an hour question." input HourAnswerInput { "Hour of day (0-23)." hour: Int! "Minute of hour (0-59)." minute: Int! } "Answer for a location question." input LocationAnswerInput { "Latitude." lat: Float! "Longitude." lng: Float! "Google Maps place ID." place_id: String! "Full formatted address." address: String! "Country name components." country: LocationCountryInput! "City name components." city: LocationCityInput! "Street name components." street: LocationStreetInput! "Street number components." street_number: LocationStreetNumberInput! } "City name components for a location answer." input LocationCityInput { "Full city name." long_name: String! "Abbreviated city name." short_name: String! } "Country name components for a location answer." input LocationCountryInput { "Full country name." long_name: String! "ISO 3166-1 alpha-2 country code." short_name: String! } "Street name components for a location answer." input LocationStreetInput { "Full street name." long_name: String! "Abbreviated street name." short_name: String! } "Street number components for a location answer." input LocationStreetNumberInput { "Full street number." long_name: String! "Abbreviated street number." short_name: String! } enum MessageKind { CREATE_SUBMISSION_MAPPING } "Answer for a phone question." input PhoneAnswerInput { "The phone number." phone: String! """ The ISO 3166-1 alpha-2 country code (e.g. "US"). """ country_short_name: String! } "Phone questions only: Configuration for setting a specific predefined phone country prefix that will be pre-selected for users." type PhonePrefixPredefined { "Whether a predefined phone prefix is enabled for phone number questions. When true, the specified prefix will be pre-selected." enabled: Boolean! """ The predefined phone country prefix to use as country code in capital letters (e.g., "US", "UK", "IL"). Only used when enabled is true. """ prefix: String } "Phone questions only: Configuration for setting a specific predefined phone country prefix that will be pre-selected for users." input PhonePrefixPredefinedInput { "Whether a predefined phone prefix is enabled for phone number questions. When true, the specified prefix will be pre-selected." enabled: Boolean! """ The predefined phone country prefix to use as country code in capital letters (e.g., "US", "UK", "IL"). Only used when enabled is true. """ prefix: String } "Configuration for automatically populating question values from various data sources such as user account information or URL query parameters." type PrefillSettings { "Whether prefill functionality is enabled for this question. When true, the question will attempt to auto-populate values from the specified source." enabled: Boolean! "The data source to use for prefilling the question value. Check the PrefillSources for available options." source: FormQuestionPrefillSources """ The specific field or parameter name to lookup from the prefill source. For account sources, this would be a user property like "name" or "email". For query parameters, this would be the parameter name that would be set in the URL. """ lookup: String! } "Configuration for automatically populating question values from various data sources such as user account information or URL query parameters." input PrefillSettingsInput { "Whether prefill functionality is enabled for this question. When true, the question will attempt to auto-populate values from the specified source." enabled: Boolean! "The data source to use for prefilling the question value. Check the PrefillSources for available options." source: FormQuestionPrefillSources """ The specific field or parameter name to lookup from the prefill source. For account sources, this would be a user property like "name" or "email". For query parameters, this would be the parameter name that would be set in the URL. """ lookup: String } input QuestionOptionInput { "The display text for the option shown to respondents. Must be at least 1 character long." label: String! } input QuestionOrderInput { "The unique identifier for the question. Used to target specific questions within a form." id: String! } enum RepositorySource { MONDAY } enum ResourceType { POST ASSET BOARD POST_REF } type ResponseForm { "The unique identifier for the form. Auto-generated upon creation." id: Int! "The unique identifier token for the form. Required for all form-specific operations." token: String! "Boolean indicating if the form is currently accepting responses and visible to users." active: Boolean! "The display title shown to users at the top of the form." title: String! "The ID of the user who created and owns this form. Determines permissions." ownerId: Int "Boolean indicating if this form was built using monday’s AI form builder agent." builtWithAI: Boolean! "Optional detailed description explaining the form purpose, displayed below the title." description: String "Array of question objects that make up the form content, in display order." questions: [FormQuestion!] "Boolean indicating if responses are collected without identifying the submitter." isAnonymous: Boolean! "The category or classification of the form for organizational purposes." type: String "Object containing feature toggles and settings like password protection, response limits, etc." features: FormFeatures "Object containing visual styling settings including colors, fonts, layout, and branding." appearance: FormAppearance "Object containing accessibility settings such as language, alt text, and reading direction." accessibility: FormAccessibility "Array of tracking tags for categorization and analytics (e.g., UTM parameters for marketing tracking)." tags: [FormTag!] } "Input type for setting a form password" input SetFormPasswordInput { "The password to set for the form. Must be at least 1 character long." password: String! } "A condition that evaluates a specific question answer against expected values." input ShowIfConditionInput { "The ID of the question (building block) whose answer is evaluated by this condition." building_block_id: ID! "Logical operator for combining rules or conditions. Must be OR — the question is shown if any rule or condition is satisfied." operator: ConditionOperator! """ The expected answer values. The condition is met if the question answer matches any of these values (acts as "is one of"). """ values: [String!]! } "A rule grouping one or more conditions. All conditions within a rule must be met for the rule to be satisfied." input ShowIfRuleInput { "Logical operator for combining rules or conditions. Must be OR — the question is shown if any rule or condition is satisfied." operator: ConditionOperator! "A condition that evaluates a specific question answer against expected values." conditions: [ShowIfConditionInput!]! } "Conditional visibility rules for this question. The question is shown when any rule is satisfied (OR between rules). Each rule contains conditions that must all be met (AND within a rule). Structure: { operator, rules: [{ operator, conditions: [{ building_block_id, operator, values }] }] }." input ShowIfRulesInput { "Logical operator for combining rules or conditions. Must be OR — the question is shown if any rule or condition is satisfied." operator: ConditionOperator! "A rule grouping one or more conditions. All conditions within a rule must be met for the rule to be satisfied." rules: [ShowIfRuleInput!]! } "A single subitem answer, containing answers for each of the subitem's questions." input SubitemAnswerInput { "The answers for this subitem's questions." answers: [FormAnswerInput!]! } "A form tag — metadata submitted alongside answers and mapped to a board column." input TagInput { "The column ID this tag maps to." column_id: String! "The tag value to submit." value: String! } input UpdateFormInput { "The title text for the form. Must be at least 1 character long." title: String "Optional description text providing context about the form purpose." description: String "Ordered array of dehydrated questions, object only including each question ID, for reordering. Must include all existing question IDs." questions: [QuestionOrderInput!] } input UpdateFormSettingsInput { "Object containing form features including but not limited to password protection, response limits, login requirements, etc." features: FormFeaturesInput "Object containing visual styling including colors, layout, fonts, and branding elements." appearance: FormAppearanceInput "Object containing accessibility options such as language, alt text, etc." accessibility: FormAccessibilityInput } input UpdateFormTagInput { "The value of the tag" value: String } input UpdateQuestionInput { """ The question type determining input behavior and validation (e.g., "text", "email", "single_select", "multi_select"). """ type: FormQuestionType! "Optional explanatory text providing additional context, instructions, or examples for the question." description: String "Boolean controlling question visibility to respondents. Hidden questions remain in form structure but are not displayed." visible: Boolean "Boolean indicating if the question must be answered before form submission." required: Boolean "Question-specific configuration object that varies by question type." settings: FormQuestionSettingsInput "The question text displayed to respondents. Must be at least 1 character long and clearly indicate the expected response." title: String } enum ValidationErrorType { REQUIRED INVALID_VALUE QUESTION_NOT_FOUND } type AuditEventCatalogueEntry { name: String description: String metadata_details: JSON } type AuditLogEntry { timestamp: String account_id: String user: User event: String slug: String ip_address: String user_agent: String client_name: String client_version: String os_name: String os_version: String device_name: String device_type: String activity_metadata: JSON } """ A paginated collection of audit log entries. This object contains two properties: logs, the requested page of AuditLogEntry objects matching your query, and pagination, which contains metadata about the current and next page (if present). """ type AuditLogPage { """ List of audit log entries for the current page. See the audit log entry object for more details on this object. """ logs: [AuditLogEntry!] "Pagination metadata. See the pagination object for more details." pagination: Pagination } """ Pagination metadata: indicates the current page and page size, whether there are more pages, and the next page number if one exists. Note that the page size reflects the number of items requested, not the number of items returned. """ type Pagination { "Current page number (1-based)" page: Int "Number of items per page" page_size: Int "Indicates if there are more pages available" has_more_pages: Boolean "Number of the next page" next_page_number: Int } "Type of entity to extract from text." enum AiColumnEntity { email_address first_name last_name phone_number company_name domain_name url date time year custom } "Optional settings controlling backfill behavior when configuring an AI column." input AiColumnExtraSettingsInput { "Whether to immediately apply the AI automation to existing items. Defaults to true." run_backfill: Boolean } "Desired output length relative to the input text." enum AiColumnImproverLength { same shorter longer } "Target language for translation." enum AiColumnLanguage { english spanish french german hebrew chinese korean arabic bengali danish dutch hindi indonesian italian japanese norwegian polish portuguese russian swedish thai turkish vietnamese } "Approximate desired length of generated text." enum AiColumnOutputLength { sentence paragraph brief in_depth } "A group of people available for AI-based assignment." input AiColumnPersonGroupInput { "Array of user IDs in this group." user_ids: [Int!]! "Description of this group (e.g., role, team name, or assignment criteria)." description: String! } "Level of text refinement to apply." enum AiColumnRefinementLevel { minimal_changes moderate_changes high_creativity } "The result of removing AI configuration from a column." type AiColumnRemoveResult { "The ID of the column that had AI removed." column_id: ID! "Whether the AI configuration was successfully removed." success: Boolean! } "The result of configuring AI on a column." type AiColumnResult { "The ID of the column that was configured." column_id: ID! } "The data source for AI column processing." enum AiColumnSource { item_name thread column emails_and_activities } "Writing tone/style for AI text generation." enum AiColumnTone { empathic promotional confident professional natural casual friendly same } "Knowledge base answer generated from snippets using LLM." type KnowledgeBaseAnswer { "List of knowledge base snippets used to generate the answer." raw_snippets: [SnippetSearchResult!] "LLM-generated answer based on the knowledge base snippets." answer: String } "A knowledge base for monday.com which returns a list of snippet search results containing document content and metadata." type SnippetSearchResult { "The unique identifier of the snippet." id: ID! "The title of the article." title: String "The content of the snippet." text: String "The parent document ID." parent_id: ID "When the snippet was created." created_at: String "When the snippet was last updated." updated_at: String "The vector distance score. Lower is better. value between 0 and 1." distance: Float "The URL of the source article." url: String } "Response object for app deletion operations" type AppDeletionResponse { "Whether the deletion was successful" success: Boolean "Deletion result message" message: String } "Response from querying the apps documentation AI." type AppDocumentationAiResponse { "Unique identifier for this query response." id: ID "The original question that was asked." question: String "The AI-generated answer based on the documentation." answer: String! "The conversation ID for follow-up queries." conversation_id: ID } "Represents a relation between two app features in an app version." type AppFeatureRelation { "Unique identifier of the app feature relation." id: ID! "Date when the relation was created." created_at: Date! "Date when the relation was last updated." updated_at: Date! "The ID of the source app feature for this relation." source_id: ID "The reference ID of the target app feature for this relation." target_reference_id: ID "The name of the app feature relation." name: String "The type of the app feature relation." type: AppFeatureRelationKind "Additional metadata for this app feature relation." data: JSON } "The kind of the app feature relation." enum AppFeatureRelationKind { DEPENDENCY HOSTING } "The hosting type for the app feature release" enum AppFeatureReleaseKind { SERVER_SIDE_CODE CLIENT_SIDE_CODE EXTERNAL_HOSTING } type AppFeatureType { id: ID! created_at: Date updated_at: Date "The name of the app feature" name: String "The app feature app id" app_id: ID "The type of the app feature" type: String "The data of the app feature" data: JSON } "The type of the app feature." enum AppFeatureTypeE { OAUTH BOARD_VIEW INTEGRATION SOLUTION ITEM_VIEW DASHBOARD_WIDGET ACCOUNT_SETTINGS_VIEW DOC_ACTIONS OBJECT WORKSPACE_VIEW AI AI_BOARD_MAIN_MENU_HEADER AI_ITEM_UPDATE_ACTIONS AI_DOC_SLASH_COMMAND AI_DOC_CONTEXTUAL_MENU AI_DOC_QUICK_START AI_DOC_TOP_BAR COLUMN_TEMPLATE AI_IC_ASSISTANT_HELP_CENTER APP_WIZARD GROUP_MENU_ACTION ITEM_MENU_ACTION NOTIFICATION_KIND NOTIFICATION_SETTING_KIND BLOCK ITEM_BATCH_ACTION AI_FORMULA AI_ITEM_EMAILS_AND_ACTIVITIES_ACTIONS AI_EMAILS_AND_ACTIVITIES_HEADER_ACTIONS FIELD_TYPE PRODUCT PRODUCT_VIEW BOARD_COLUMN_ACTION BOARD_COLUMN_EXTENSION PACKAGED_BLOCK CREDENTIALS TOPBAR WORKFLOW_TEMPLATE COLUMN SUB_WORKFLOW BOARD_HEADER_ACTION DIALOG DATA_ENTITY SYNCABLE_RESOURCE AI_AGENT SURFACE_VIEW GROWTH_CONFIG MODAL ADMIN_VIEW DIGITAL_WORKER AI_AGENT_SKILL SKILL VIBE_OBJECT VIBE_ITEM_VIEW AI_PLATFORM_AGENT } "The visibility type of an app" enum AppKind { PRIVATE PUBLIC } "Permitted OAuth scopes for apps" enum AppPermission { ME_READ BOARDS_READ BOARDS_WRITE WORKSPACES_READ WORKSPACES_WRITE USERS_READ USERS_WRITE ACCOUNT_READ UPDATES_READ UPDATES_WRITE TAGS_READ ASSETS_READ TEAMS_READ TEAMS_WRITE DEPARTMENTS_READ DEPARTMENTS_WRITE NOTIFICATIONS_WRITE WEBHOOKS_WRITE WEBHOOKS_READ DOCS_READ DOCS_WRITE } "The current state of an app based on its version status" enum AppStatus { DRAFT LIVE } "The lifecycle status of an app version" enum AppVersionStatus { DRAFT LIVE DEPRECATED PROMOTING } "Input for creating an app feature relation." input CreateAppFeatureRelationInput { "The ID of the source app feature for this relation." app_feature_id: ID! "The app feature full slug of the target app feature." target_app_feature_slug: String! "The type of the app feature relation." type: AppFeatureRelationKind! "The name of the relation." name: String "Additional metadata for this relation." data: JSON } "Response object for app creation operations, including app data and API credentials" type CreateAppResponse { "The app's ID" id: ID "The app's API app ID" api_app_id: ID "The app's client ID" client_id: String "The app's client secret" client_secret: String "The app's signing secret used for webhook signature verification" signing_secret: String } "An app version" type DeveloperAppVersion { "The unique identifier of the app version" id: ID } "Input for a single lifecycle event subscription" input LifecycleEventInput { """ The lifecycle event type (e.g., "AppFeatureColumn:create") """ event_type: String! "The webhook URL for this event (max 2048 characters)" webhook_url: String! "Whether the subscription is synchronous (defaults to false)" is_sync: Boolean } "A lifecycle subscription configuration for an entity" type LifecycleSubscriptionKind { "The subscription ID" id: ID "The entity ID (e.g., app feature ID)" entity_id: ID """ The type of entity (e.g., "appFeature") """ entity_type: String """ The lifecycle event type (e.g., "AppFeatureColumn:create") """ event_type: String "The webhook URL for notifications" webhook_url: String "Whether the subscription is synchronous" is_sync: Boolean "When the subscription was created" created_at: Date "When the subscription was last updated" updated_at: Date } "Input for updating lifecycle subscriptions for an entity" input UpdateLifecycleSubscriptionsInput { "List of lifecycle event configurations (must have unique eventType values)" lifecycle_events: [LifecycleEventInput!]! } "Input type for adding an object to a hierarchy list" input CreateFavoriteInput { "The object to add to the list" object: HierarchyObjectIDInputType! "The name of the object" name: String "The position where to add the object" newPosition: ObjectDynamicPositionInput } "Represents the response when adding an object to a list" type CreateFavoriteResultType { "The favorite item that was created" favorite: GraphqlHierarchyObjectItem "If the object that was created is a folder, this is extra data about the folder" folder: GraphqlFolder } "Input type for removing an object from favorites" input DeleteFavoriteInput { "The object to remove from favorites" object: HierarchyObjectIDInputType! } "Result type for removing an object from favorites" type DeleteFavoriteInputResultType { "Whether the object was successfully removed" success: Boolean } "Represents a folder in the hierarchy" type GraphqlFolder { "The unique identifier of the folder" id: ID "The account identifier this folder belongs to" accountId: ID "The name of the folder" name: String "The timestamp when this folder was created" createdAt: Date "The timestamp when this folder was last updated" updatedAt: Date "The user who created this folder" createdBy: ID } "Represents an item in favorites" type GraphqlHierarchyObjectItem { "The unique identifier of the hierarchy item" id: ID "The account identifier this item belongs to" accountId: ID "The object identifier and type" object: HierarchyObjectID "The folder identifier if the item is contained within a folder" folderId: ID "The position of the item within its list or folder" position: Float "The timestamp when this item was created" createdAt: Date "The timestamp when this item was last updated" updatedAt: Date } "Represents a monday object." enum GraphqlMondayObject { Board Folder Dashboard Workspace } "Represents a monday object identifier with its type" type HierarchyObjectID { "The unique identifier of the object" id: ID "The type of the object" type: GraphqlMondayObject } "Input type for identifying a favorites object by its ID and type" input HierarchyObjectIDInputType { "The ID of the object" id: ID! "The type of the object" type: GraphqlMondayObject! } "Types of lists in hierarchyMS" enum ListType { PersonalList Workspace CustomizedList } input ObjectDynamicPositionInput { "The previous object in the list" prevObject: HierarchyObjectIDInputType "The next object in the list" nextObject: HierarchyObjectIDInputType } "Represents the response when adding an object to a list" type UpdateFavoriteResultType { "The favorite item that its position was updated" favorite: GraphqlHierarchyObjectItem } input UpdateObjectHierarchyPositionInput { "The favorite's object to update" object: HierarchyObjectIDInputType! "The new folder ID to move the object to, if necessary" newFolder: ID "The new position for the object" newPosition: ObjectDynamicPositionInput } "A monday dev sprint." type Sprint { "monday dev sprint unique identifier" id: ID! "monday dev sprint name" name: String "items associated with the monday dev sprint" items: [Item!] "date at which the monday dev sprint start action was performed, null if the sprint was never started" start_date: Date "date at which the monday dev sprint complete action was performed, null if the sprint was never completed" end_date: Date "user-editable planned timeline for the monday dev sprint, which may differ from its start and complete dates" timeline: SprintTimeline "current state of the monday dev sprint" state: SprintState "snapshots of the monday dev sprint" snapshots( "type of the monday dev sprint snapshot" type: [SprintSnapshotKind!]): [SprintSnapshot!] } "A monday dev sprint snapshot." type SprintSnapshot { "monday dev sprint snapshot unique identifier" id: ID "monday dev sprint snapshot kind" type: SprintSnapshotKind "monday dev sprint snapshot items" items: [SprintSnapshotItem!] "monday dev sprint snapshot columns metadata" columns_metadata: [SprintSnapshotColumnMetadata!] "monday dev sprint unique identifier" sprint_id: ID "date and time when the object was created" created_at: Date "date and time when the object was last updated" updated_at: Date } "A monday dev sprint snapshot column metadata." type SprintSnapshotColumnMetadata { "monday dev sprint snapshot column id" id: String! "monday dev sprint snapshot status column done status indexes" done_status_indexes: [Int!]! } "A monday dev sprint snapshot item." type SprintSnapshotItem { "monday dev sprint item unique identifier" id: ID! "monday dev sprint item column values" column_values: [SprintSnapshotItemColumnValue!] } "A monday dev sprint snapshot item column value." type SprintSnapshotItemColumnValue { "monday dev sprint snapshot item column id" id: String! "monday dev sprint snapshot item column type" type: String! "monday dev sprint snapshot item column value" value: JSON } "The kind of sprint snapshot." enum SprintSnapshotKind { START COMPLETE } "current state of the monday dev sprint." enum SprintState { PLANNED ACTIVE COMPLETED } "user-editable planned timeline for the monday dev sprint, which may differ from its start and complete dates" type SprintTimeline { "user-editable start date of the monday dev sprint timeline, may be different than the sprint start date" from: Date "user-editable complete date of the monday dev sprint timeline, may be different than the sprint complete date" to: Date } "Dimension to group event counts by" enum ActivityGroupBy { BOARD USER } "Represents a single activity log entry" type ActivityLog { "The unique identifier of the activity log entry" id: ID "The account this activity log entry belongs to" account_id: ID "The user who performed the action" user_id: ID "The type of event that occurred" event: String "The entity type that was affected" entity: String "Additional data associated with the event as a JSON string" data: String "The timestamp when the activity log entry was created" created_at: String } "Entry point for internal activity log queries" type ActivityLogInternalQueries { "Internal activity log entries for boards or users — skips authorization, entity whitelisting, and always includes boardless events" logs( "Filter by board IDs" board_ids: [ID!], "Filter by user IDs" user_ids: [ID!], from: String, to: String, """ Filter by event types (e.g. "create_pulse", "delete_pulse") """ event_types: [String!], "Filter by correlation IDs to retrieve all events belonging to the same logical session" correlation_ids: [ID!], """ Filter by entity types (e.g. "pulse" (item), "board", "update", etc.) """ entities: [String!], "Free-text prefix search." search: String, limit: Int, "Cursor for fetching the next page, obtained from a previous response" cursor: String): ActivityLogsPage "Event counts grouped by board or user in a single aggregation request (no per-entity fan-out). board_ids is always required. Provide user_ids to count specific users; omit them (with group_by USER) to discover the top-N users active on the given boards." event_counts( "Dimension to group counts by" group_by: ActivityGroupBy!, "Discovery mode only (group_by USER, no user_ids): max users to return (default 100, max 500)" limit: Int, "Board IDs to scope and group by (required)" board_ids: [ID!]!, "Filter by user IDs" user_ids: [ID!], from: String, to: String, """ Filter by event types (e.g. "create_pulse", "delete_pulse") """ event_types: [String!], "Filter by correlation IDs to retrieve all events belonging to the same logical session" correlation_ids: [ID!], """ Filter by entity types (e.g. "pulse" (item), "board", "update", etc.) """ entities: [String!], "Free-text prefix search." search: String): EventCountsResult } "Entry point for all activity log queries" type ActivityLogQueries { "Activity log entries for boards or users" logs( "Filter by board IDs" board_ids: [ID!], "Filter by user IDs" user_ids: [ID!], from: String, to: String, limit: Int, """ Filter by event types (e.g. "create_pulse", "delete_pulse") """ event_types: [String!], "Cursor for fetching the next page, obtained from a previous response" cursor: String): ActivityLogsPage } "A page of activity log entries with a cursor for fetching the next page" type ActivityLogsPage { "The activity log entries for this page" logs: [ActivityLog!] "Cursor to pass to fetch the next page, null if this is the last page" cursor: String } "Event counts grouped by the requested dimension" type EventCountsResult { "Explicit mode (IDs supplied): one bucket per requested ID, count 0 for IDs with no events. Discovery mode (group_by USER without user_ids): top-N users active on the given boards." buckets: [GroupCountBucket!] } "A grouped entity and its event count" type GroupCountBucket { "The grouped entity ID (board ID or user ID, depending on group_by)" key: ID "Number of events for this entity within the filtered range" count: Int } "A page of activity log entries with a cursor for fetching the next page" type UserActivityLogsPage { "The activity log entries for this page" logs: [ActivityLog!] "Cursor to pass to fetch the next page, null if this is the last page" cursor: String } "Input for board relation column default settings." input BoardRelationColumnDefaultsInput { "Whether creating a reflection column is allowed." allow_create_reflection_column: Boolean "Whether multiple items can be linked." allow_multiple_items: Boolean "List of linked board identifiers." board_ids: [ID!] "The unique identifier of the data view when applicable." data_view_id: ID "The type of relation (e.g. item_to_board)." relation_type: String } "A connected board entry (column_id + connected board ref). Used by add/remove mutations and by the get connected boards query page." type BoardRelationConnectedBoardsResult { "The board relation column identifier." column_id: ID "The connected board (resolved from the boards subgraph)." connected_board: Board } "Mapping between source and target columns for a connected board." input ConnectedBoardColumnMappingInput { "The unique identifier of the source column in the mapping." source_column_id: ID! "The unique identifier of the target column in the mapping." target_column_id: ID! } "A connected board with optional column mappings." input ConnectedBoardInput { "The unique identifier of the connected board." board_id: ID! "Column mappings between the linked boards." mappings: [ConnectedBoardColumnMappingInput!] } "A connected column entry with board relation context." type ConnectedColumnItem { "The mirror/lookup column identifier." column_id: ID "The board relation column identifier that this mirror references." board_relation_column_id: ID "The connected board (resolved from the boards subgraph)." connected_board: Board "The connected column on the connected board (id, and when available title and type)." connected_column: ConnectedTargetColumn } "Target column metadata from the data view (mirror target column)." type ConnectedTargetColumn { "The column identifier." id: ID "The column title." title: String "The column type." type: String } "Cursor-paginated result for connected columns query." type CursorPaginatedConnectedColumnsResult { "Total number of connected columns across all requested columns." total: Int "Cursor for the next page. Null if no more results." next_cursor: String "The current page of connected column entries." page: [ConnectedColumnItem!] "Target schema per group of columns that share the same data view." target_schema_groups: [TargetSchemaGroup!] } "Controls how mirrored values are aggregated or selected." enum MirrorCalc { EARLIEST_TO_LATEST EARLIEST LATEST } "Input for mirror column default settings." input MirrorColumnDefaultsInput { "Relation column IDs to enable (e.g. board_relation_xxx). Each listed column is treated as enabled." relation_column: [ID!] """ Array mapping linked boards to the columns to display. Example: [{ board_id, column_ids: ["name", "status"] }]. """ displayed_linked_columns: [MirrorDisplayedLinkedColumnInput!] "Aggregation type for status summaries." sum_type: MirrorSum "Calculation type for linked date aggregation." calc_type: MirrorCalc "Data view column ID within the target schema." target_column_id: ID "Filter configuration for the lookup/mirror column." filter: ItemsQueryGroup } "Mapping of a linked board to the columns to display." input MirrorDisplayedLinkedColumnInput { "The unique identifier of the linked board." board_id: ID! "Column IDs to display for this board." column_ids: [ID!]! } "Controls which statuses are included when summing mirrored values." enum MirrorSum { DONE_ONLY ALL_STATUSES } "Cursor-paginated result for connected boards query." type PaginatedConnectedBoards { "Total number of connected boards across all requested columns." total: Int "Cursor for the next page. Null if no more results." next_cursor: String "The current page of connected board entries." page: [BoardRelationConnectedBoardsResult!] "Target schema per group of columns that share the same data view." target_schema_groups: [TargetSchemaGroup!] } "Target schema (data view target columns) for a set of columns that share the same data view." type TargetSchemaGroup { "Column ids (board-relation or mirror) that use this target schema." column_ids: [ID!] "Target columns for this schema." target_columns: [ConnectedTargetColumn!] } "Available AI model tiers." enum AiModel { MONDAY_FAST MONDAY_STANDARD MONDAY_POWERFUL } "Configuration options for the AI completion request." input RunPromptConfigInput { "The AI model to use for the completion." model: AiModel "An optional system prompt to set context for the model." system_prompt: String "Sampling temperature between 0 and 1." temperature: Float "Maximum number of tokens to generate." max_tokens: Int } "The result of running a prompt against an AI model." type RunPromptResult { "The generated text content from the model." content: String } input ColumnPropertyInput { "The ID of the column" column_id: String! "Whether the column is visible" visible: Boolean! } input ColumnsConfigInput { "Configuration for main board columns" column_properties: [ColumnPropertyInput!] "Configuration for subitems columns" subitems_column_properties: [ColumnPropertyInput!] "Number of floating columns to display" floating_columns_count: Int "Order of columns" column_order: [String!] } "Configuration settings for group by column" input GroupByColumnConfigInput { "Sort settings for the column" sortSettings: GroupBySortSettingsInput } "Condition for grouping items by column" input GroupByConditionInput { "ID of the column to group by" columnId: String! "Configuration for the group by column" config: GroupByColumnConfigInput } "Settings for grouping board items" input GroupBySettingsInput { "List of conditions for grouping items" conditions: [GroupByConditionInput!]! "Whether to hide groups with no items" hideEmptyGroups: Boolean } "Sort settings for group by configuration" input GroupBySortSettingsInput { "Sort direction for the group" direction: SortDirection! "Type of sorting to apply" type: String } "Direction for sorting items" enum SortDirection { ASC DESC } "Settings configuration for table view display options" input TableViewSettingsInput { "Column visibility configuration for the board view" columns: ColumnsConfigInput "The group by to apply to the board view" group_by: GroupBySettingsInput } "Specifies the entity scope for the created view" enum ViewContext { BOARD } "Available view types for board displays" enum ViewKind { DASHBOARD TABLE FORM APP } "Type of mutation operation" enum ViewMutationKind { CREATE UPDATE } "Represents an instance of a managed template." type Instance { "The unique identifier for the instance." id: Int "The ID of the entity this instance represents (e.g., a board ID)." entityId: ID "The type of the entity (e.g., 'board')." entityType: String """ The current synchronization status of the instance (e.g., "synced", "failed"). """ syncStatus: String "Additional data about the sync status, like error details." syncStatusData: JSON "The timestamp when the instance was created." createdAt: Date "The timestamp when the instance was soft-deleted, if applicable." deletedAt: Date } "A board-scope permission that can be required in addition to regular board read access." enum BoardPermission { BOARD_REPORTABILITY } "Boost configuration for search results. Key-value pairs where key is strategy type and value is boost weight." input BoostConfigurationInput { "Boost strategies as key-value pairs (strategy: weight). Empty object {} disables all boosts." boosts: JSON } "Date range filter applied globally across all entity types in cross-entity search." input CrossEntityDateRangeInput { "Filter results created before this date." created_before: ISO8601DateTime "Filter results created after this date." created_after: ISO8601DateTime "Filter results updated before this date." updated_before: ISO8601DateTime "Filter results updated after this date." updated_after: ISO8601DateTime } "Lookup namespace. Each field looks up a single entity type by name." type LookupNamespace { "Lookup boards by name." boards( "Search query text (matched against name only)." query: String!, "Maximum number of results to return (default 10, max 20)." limit: Int = 10, "Filter boards to specific workspace IDs." workspace_ids: [ID!]): SearchBoardResults! } type Meeting { id: ID! } "Controls which meetings are returned based on ownership and sharing scope." enum MeetingSearchAccess { OWN SHARED_WITH_ME SHARED_WITH_ACCOUNT ALL } "Specifies which indexed meeting fields to include in the search. Set a field to true to search it. If the entire object is omitted, all fields are searched." input MeetingSearchFieldsInput { "Meeting title." title: Boolean "AI-generated meeting gist/summary." gist: Boolean "Meeting summary text." summary: Boolean "Meeting talking points and topics." talking_points: Boolean "Action items from the meeting." action_points: Boolean "Names of meeting participants." attendee_names: Boolean } "Date range filter for meetings based on start time." input MeetingsDateRangeInput { "Return meetings that start on or after this date." from: ISO8601DateTime "Return meetings that start on or before this date." to: ISO8601DateTime } "Persons filter for search queries" input PersonsInput { "List of person IDs to filter by" person_ids: [ID!] "List of team IDs to filter by" team_ids: [ID!] "List of person names to filter by (searches in multiple-person columns)" person_names: [String!] } "Algorithms for reranking results." enum RerankingStrategy { CROSS_ENCODER } "Available search modes." enum Search { LEXICAL SEMANTIC HYBRID } "A single board search result with indexed and live data." type SearchBoardResult { "Unique identifier of the board." id: ID! "Board data from the search index." indexed_data: SearchIndexedBoard! "Live board data via federation. Null when the referenced board cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: Board } "Wrapper for a list of board search results." type SearchBoardResults { "List of board search results." results: [SearchBoardResult!]! } "Date range filter for search queries" input SearchDateRangeInput { "Filter items created before this date" created_before: ISO8601DateTime "Filter items created after this date" created_after: ISO8601DateTime "Filter items updated before this date" updated_before: ISO8601DateTime "Filter items updated after this date" updated_after: ISO8601DateTime "Filter items with a date column having a value before this date" column_value_before: ISO8601DateTime "Filter items with a date column having a value after this date" column_value_after: ISO8601DateTime } "Date range filter for search queries" input SearchDateRangeLegacyInput { "Filter items created before this date" createdBefore: ISO8601DateTime "Filter items created after this date" createdAfter: ISO8601DateTime "Filter items updated before this date" updatedBefore: ISO8601DateTime "Filter items updated after this date" updatedAfter: ISO8601DateTime } "A single doc search result with indexed and live data." type SearchDocResult { "Unique identifier of the doc." id: ID! "Doc data from the search index." indexed_data: SearchIndexedDoc! "Live doc data via federation. Null when the referenced doc cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: Document } "Wrapper for a list of doc search results." type SearchDocResults { "List of doc search results." results: [SearchDocResult!]! } "Board data stored in the search index." type SearchIndexedBoard { "Board ID." id: ID! "Board name." name: String! "Board description." 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! } "Document data stored in the search index." type SearchIndexedDoc { "Document ID." id: ID! "Document name." name: String! "ID of the workspace containing this document." workspace_id: ID } "Item data stored in the search index." type SearchIndexedItem { "Item ID." id: ID! "Item name." name: String! "URL to view this item." url: String! "ID of the board containing this item." board_id: ID "ID of the workspace containing this item." workspace_id: ID } "Meeting data stored in the search index." type SearchIndexedMeeting { "Meeting ID (UUID)." id: ID! "Meeting title." title: String "Calendar provider (e.g. google_calendar, outlook_calendar)." meeting_provider: String "ISO timestamp when the meeting started." start_time: String "ISO timestamp when the meeting ended." end_time: String "Email addresses of meeting participants." attendee_emails: [String!] "Names of meeting participants." attendee_names: [String!] "AI-generated meeting gist." gist: String "AI-generated meeting summary." summary: String "Meeting talking points and topics." talking_points: String "Action items from the meeting." action_points: String "Matched text snippets per field. Keys are field names, values are arrays of highlighted text fragments with tags around matched terms." highlights: JSON } "Overview (dashboard) data stored in the search index." type SearchIndexedOverview { "Overview ID." id: ID! "Overview name." name: String! "Overview kind (public or private)." kind: String! "Overview state (active, archived, or deleted)." state: String! "Workspace ID this overview belongs to." workspace_id: ID "ID of the user who created the overview." created_by: ID "Creation timestamp." created_at: String "Last update timestamp." updated_at: String } "Timeline item data stored in the search index." type SearchIndexedTimelineItem { "Timeline item ID." id: ID! "ID of the account owning this timeline item." account_id: ID! "ID of the item this timeline item belongs to." item_id: ID! "ID of the board containing this timeline item." board_id: ID "Timeline item type (e.g. email, googleCalendar)." type: String! "Product kind the timeline item originates from (e.g. service, crm)." product_kind: String! "Timeline item title." title: String! "Timeline item summary." summary: String! "Timeline item full content body." content: String! "ISO timestamp when the timeline item was created." created_at: ISO8601DateTime! "ISO timestamp when the timeline item was last modified." updated_at: ISO8601DateTime! } "Update data stored in the search index." type SearchIndexedUpdate { "Update ID." id: ID! "Update content (HTML formatted)." body: String! "ID of the user who created the update." creator_id: ID! "ID of the item this update belongs to." item_id: ID! "ID of the board containing this update." board_id: ID! "ISO timestamp when the update was created." created_at: String! "ISO timestamp when the update was last modified." updated_at: String! } "User data stored in the search index." type SearchIndexedUser { "User ID." id: ID! "The user's full name." name: String! "The user's email address." email: String! } "Workspace data stored in the search index." type SearchIndexedWorkspace { "Workspace ID." id: ID! "Workspace name." name: String! "Workspace kind (open or closed)." kind: String! "Workspace description." description: String "Workspace state (active, archived, or deleted)." state: String! } "A single item search result with indexed and live data." type SearchItemResult { "Unique identifier of the item." id: ID! "Item data from the search index." indexed_data: SearchIndexedItem! "Live item data via federation. Null when the referenced item cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: Item } "Wrapper for a list of item search results." type SearchItemResults { "List of item search results." results: [SearchItemResult!]! } "A single meeting search result with indexed and live data." type SearchMeetingResult { "Unique identifier of the meeting." id: ID! "Meeting data from the search index." indexed_data: SearchIndexedMeeting! } "Wrapper for a list of meeting search results." type SearchMeetingResults { "List of meeting search results." results: [SearchMeetingResult!]! "Total number of matching meetings in the index (before limit is applied)." total_count: Int } "Per-entity search namespace. Each field searches a single entity type." type SearchNamespace { "Search for items." items( "The search query string." 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 items to specific board IDs." board_ids: [ID!], "Filter items to specific workspace IDs." workspace_ids: [ID!]): SearchItemResults! "Search for boards." boards( "The search query string." 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 board IDs." board_ids: [ID!], "Filter boards to specific workspace IDs." workspace_ids: [ID!]): SearchBoardResults! "Search for documents." docs( "The search query string." 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 documents to specific workspace IDs." workspace_ids: [ID!]): SearchDocResults! "Search for workspaces." workspaces( "The search query string." 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 to specific workspace IDs." workspace_ids: [ID!], "Filter workspaces by kind (open or closed)." kind: String): SearchWorkspaceResults! } "A single overview search result with indexed and live data." type SearchOverviewResult { "Unique identifier of the overview." id: ID! "Overview data from the search index." indexed_data: SearchIndexedOverview! "Live overview data via federation. Null when the referenced overview cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: Overview } "Wrapper for a list of overview search results." type SearchOverviewResults { "List of overview search results." results: [SearchOverviewResult!]! } "Controls the trade-off between search quality and response time." enum SearchStrategy { SPEED BALANCED QUALITY } "A single timelineitem search result with indexed and live data." type SearchTimelineItemResult { "Unique identifier of the timelineitem." id: ID! "TimelineItem data from the search index." indexed_data: SearchIndexedTimelineItem! "Live timelineitem data via federation. Null when the referenced timelineitem cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: TimelineItem } "Wrapper for a list of timelineitem search results." type SearchTimelineItemResults { "List of timelineitem search results." results: [SearchTimelineItemResult!]! } "A single update search result with indexed and live data." type SearchUpdateResult { "Unique identifier of the update." id: ID! "Update data from the search index." indexed_data: SearchIndexedUpdate! "Live update data via federation. Null when the referenced update cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: Update } "Wrapper for a list of update search results." type SearchUpdateResults { "List of update search results." results: [SearchUpdateResult!]! } "A single user search result with indexed and live data." type SearchUserResult { "Unique identifier of the user." id: ID! "User data from the search index." indexed_data: SearchIndexedUser! "Live user data via federation. Null when the referenced user cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: User } "Wrapper for a list of user search results." type SearchUserResults { "List of user search results." results: [SearchUserResult!]! } "A single workspace search result." type SearchWorkspaceResult { "Unique identifier of the workspace." id: ID! "Workspace data from the search index." indexed_data: SearchIndexedWorkspace! "Live workspace data via federation. Null when the referenced workspace cannot be resolved by the owning subgraph (e.g. deleted, not accessible to the caller, or indexing lag)." live_data: Workspace } "Wrapper for a list of workspace search results." type SearchWorkspaceResults { "List of workspace search results." results: [SearchWorkspaceResult!]! } type TimelineItem { id: ID type: String "The item that the timeline item is on." item: Item "The board that the timeline item is on." board: Board "The user who created the timeline item." user: User "The title of the timeline item." title: String "The external ID of the custom activity of the timeline item." custom_activity_id: String "The content of the timeline item." content: String "The creation date of the timeline item." created_at: Date! } "Kind of timeline item." enum TimelineItemKind { email googleCalendar outlookCalendar zoom activity custom note videoMeeting phoneCall meeting aiAssistant aiReply portal demoEmail aiSummary form portfolio_status sequencesEmail outreachExpertPhoneCall outreachExpertPhoneCallV2 mergedTickets customInternalApp campaigns } "Product kind that owns the timeline item." enum TimelineItemProductKind { service crm } "The complete graph export for a board" type BoardGraphExport { "The ID of the board" boardId: String "The graph data structure" graphData: JSON "The timestamp when the graph was exported" exportedAt: String "The total number of nodes in the graph" nodeCount: Int "The total number of edges in the graph" edgeCount: Int "The attributes of the graph" graphAttributes: JSON "The cycles in the graph" cycles: JSON } "Configuration record for a dependency column" type DependencyColumnConfig { "The ID of the configuration record" id: ID "The account ID" account_id: ID "The board ID" board_id: ID "Configuration data containing mode and is_new_dependency" data: JSON "Creation timestamp" created_at: String "Last update timestamp" updated_at: String """ The type of configuration (always "dependency") """ config_type: String } "Result containing dependency column configurations for a board" type DependencyColumnConfigResult { "The ID of the board" board_id: ID "Array of dependency column configurations" dependency_columns: [DependencyColumnConfig!] } "Input type for updating a single pulse dependency value" input DependencyPulseValueInput { "The ID of the pulse to update the dependency value for" pulseId: ID! "The value of the dependency pulse value to update" value: DependencyValueInput! } "The type of the dependency related column" enum DependencyRelatedColumnTypes { DATE TIMELINE } "The value of the dependency related column. when updating a date column the from and to fields should have the same value" input DependencyRelatedValueInput { "From value" from: String "To value" to: String } "Type of dependency relationship between items" enum DependencyRelation { FS SS FF SF } "Input type for updating dependency column value, supporting both adding and removing dependencies" input DependencyValueInput { "List of pulses to add as dependencies with their configuration" added_pulse: [UpdateDependencyColumnInput!] "List of pulses to remove from dependencies" removed_pulse: [UpdateDependencyColumnInput!] } "A single event record" type Event { "The unique identifier of the event" id: ID "The type of the event" type: String "The current state of the event" state: String "The ID of the board associated with this event" board_id: ID "The event data payload" event_data: JSON "The timestamp of the origin last update" origin_last_updated: String "The timestamp when the event was created" created_at: String "The timestamp when the event was last updated" updated_at: String } "Paginated export of events" type EventsExport { "The list of events" events: [Event!] "The total number of events matching the query" total: Int "The maximum number of events returned" limit: Int "The offset from which events are returned" offset: Int } "Metadata wrapper containing payload information for dependency configuration" input MetadataInput { "The dependency configuration payload containing type and lag settings" payload: PayloadInput } "Input type for dependency metadata payload containing dependency type and lag configuration" input PayloadInput { "Type of dependency relationship between the items" dependency_type: DependencyRelation "Number of days offset between the dependent items (can be negative)" lag: Int } "Input type for timeline dates with from and to date strings" input TimelineDateInput { "The ID of the successor pulse whose date should be updated" id: ID! "Start date of the timeline in ISO format" from: String! "End date of the timeline in ISO format" to: String! } "Input type for updating a single dependency relationship between pulses" input UpdateDependencyColumnInput { "The ID of the pulse to create or remove a dependency relationship with" linkedPulseId: ID! "Optional metadata containing dependency configuration (type and lag)" metadata: MetadataInput } "The type of entity that a reaction is attributed to." enum AttributionEntity { AGENT } type Like { id: ID! creator_id: String creator: User reaction_type: String created_at: Date updated_at: Date } "The type of the mention." enum MentionType { User Team Project Board Agent } input UpdateMention { "The object id." id: ID! "The type of the mention." type: MentionType! } "The pin to top data of the update." type UpdatePin { item_id: ID! } "Paginated updates response with cursor." type UpdatesPage { "The list of updates." updates: [Update!]! "Opaque cursor for the next page. Null when no more data." cursor: String } "The viewer of the update." type Watcher { user_id: ID! medium: String! user: User } "A single execution of an agent." type AgentActivityRun { "Unique identifier for the run." id: ID! "The current or final status of the run." status: AgentActivityRunStatus! "What triggered this run (raw value as reported by the agent SDK, e.g. api, assign, chat)." trigger: String "ID of the user who triggered the run, if applicable." triggering_user_id: ID "Number of credits consumed by this run." credits_used: Int "List of tool names used during this run." tools: [String!] "Human-readable description of what the run did." description: String "ISO 8601 timestamp when the run started." started_at: String! "ISO 8601 timestamp when the run ended." ended_at: String "The individual steps performed during this run." steps: [AgentActivityStep!]! } "The current or final status of an agent activity run." enum AgentActivityRunStatus { RUNNING SUCCESS FAILED CANCELLED } "A paginated list of agent activity runs." type AgentActivityRunsConnection { "The agent activity runs on this page." nodes: [AgentActivityRun]! "Cursor for fetching the next page." cursor: String } "A single step within an agent activity run." type AgentActivityStep { "A description of what this step did." description: String "ISO 8601 timestamp when this step occurred." created_at: String! } "Initialization response for bulk delete containing job ID for polling" type BulkDeleteInit { "Job ID for polling progress via job_status query" job_id: ID } "Reason for failure when status is Rejected or Failed" enum BulkImportFailureReason { INVALID_UPLOAD AUTHORIZATION_FAILED PERMISSION_DENIED BOARD_CAPACITY_EXCEEDED ACCOUNT_CAPACITY_EXCEEDED FILE_TOO_LARGE INTERNAL_ERROR } "Initialization response for bulk import containing import ID and upload URL" type BulkImportInit { "The unique identifier of the bulk import operation" import_id: ID "The URL where the file should be uploaded for processing" upload_url: String } "Item counts for a bulk import process" type BulkImportItemCounts { "Total number of items submitted for import" submitted: Int "Number of items that failed validation" invalid: Int "Number of items that were skipped" skipped: Int "Number of items that have been created" created: Int "Number of items that have been updated" updated: Int "Number of valid items that failed during import execution" failed: Int } "Current state of the import process" enum BulkImportState { UPLOAD_PENDING REJECTED PROCESSING COMPLETED FAILED } "Status information for a bulk import process" type BulkImportStatus { "Current state of the import process" status: BulkImportState "Item counts breakdown for the import process" counts: BulkImportItemCounts """ Progress percentage (0-100) of the import process. Note: 100 does not imply success — on FAILED or REJECTED the percentage is also locked to 100 to indicate "no more work will happen". Clients must check `status` and `failure_reason` to determine the outcome. """ progress_percentage: Int "Reason for failure when status is Rejected or Failed" failure_reason: BulkImportFailureReason "User-friendly error message explaining why the import failed or was rejected" failure_message: String "Indicates if the upload is completely done" fully_imported: Boolean "Indicates if a report file has been generated" report_created: Boolean "URL to download the import report, valid for 10 minutes" report_url: String } "Item counts for an items job process" type ItemsJobItemCounts { "Total number of items submitted for processing" submitted: Int "Number of items that failed validation" invalid: Int "Number of items that were skipped" skipped: Int "Number of items that have been created" created: Int "Number of items that have been updated" updated: Int "Number of valid items that failed during execution" failed: Int } "Status information for an items job process" type ItemsJobStatus { "Current state of the job process" status: BulkImportState "Item counts breakdown for the job process" counts: ItemsJobItemCounts "Progress percentage (0-100) of the job process" progress_percentage: Int "Reason for failure when status is Rejected or Failed" failure_reason: BulkImportFailureReason "User-friendly error message explaining why the job failed or was rejected" failure_message: String "Indicates if the job is completely done" fully_imported: Boolean "Indicates if a report file has been generated" report_created: Boolean "URL to download the job report, valid for 10 minutes" report_url: String } "Status of a job operation. Currently supports items job status for backfill and ingest operations." union JobStatus = ItemsJobStatus "Strategy for handling matching items during import" enum OnMatchBehaviour { UPSERT SKIP } "Configuration for how to handle matching items during import" input OnMatchInput { "The column ID to use for matching (e.g., email, phone number). When importing items, this column value will be used to identify matches." match_column_id: String! "Strategy for handling matching items" behaviour: OnMatchBehaviour! } "Result of an undo operation" type UndoResult { "Whether the undo was successfully initiated" success: Boolean "Human-readable status message" message: String } "Initialization response containing job ID and upload URL" type UploadJobInit { "The unique identifier of the job" job_id: ID "The URL where the file should be uploaded for processing" upload_url: String } "Input for updating an existing widgets surface via LLM regeneration." input UpdateWidgetsSurfaceInput { "Natural-language instruction describing the desired changes to the widgets surface." prompt: String! "Metadata associated with the update request." metadata: JSON "JSON Schema (JSONSchema7 format) used as the data structure source for widget generation. If omitted, the previously persisted data_structure is used." data_structure: JSON "Optional sample data for the data source, used to guide generation." data_sample: JSON } "Represents a board and its connection to an object schema." type BoardConnection { "The unique identifier of the board." id: ID "The object schema ID that this board is connected to." object_schema_id: ID } "Result of a single board detach operation within a bulk detach request." type BulkDetachBoardResult { "The board ID that was detached." board_id: ID "Whether the detach operation succeeded." success: Boolean "Error message if the detach failed." error: String } "Calculated capability settings for a column" type CalculatedCapability { "Function to calculate the parent values" function: CalculatedFunction! "Type of the calculated value" calculated_type: ColumnType } "Fields that can be overridden in a column policy" enum CanOverrideField { settings title description } "A board-type data view source that is a child of a schema source." type ChildBoardDataViewSource { "The source identifier." source_id: DataViewSourceId "The parent schema source identifier." parent_source_id: DataViewSourceId } "Action to perform on an object schema column to change its active state. A column can be reactivated if it was previously deactivated." enum ColumnActiveStateAction { DEACTIVATE REACTIVATE } "Capabilities available for a column" type ColumnCapabilities { "Calculated capability settings" calculated: CalculatedCapability "Visibility capability settings" visibility: String } "Policy rules that control what actions can be performed on a column" input ColumnPolicyInput { "User-facing messages explaining why certain actions are disabled" messages: PolicyMessagesInput "List of fields that can be overridden" can_override: [CanOverrideField!]! "Whether the column cannot be deleted" cannot_delete: Boolean! } union ColumnSettings = StatusColumnSettings | DropdownColumnSettings input CreateDropdownColumnSettingsInput { labels: [CreateDropdownLabelInput!]! "Whether to limit the number of labels that can be selected" limit_select: Boolean "Maximum number of labels that can be selected when limit_select is enabled" label_limit_count: Int } input CreateDropdownLabelInput { label: String! } "Input for creating a new column on an object schema" input CreateObjectSchemaColumnInput { """ The column type (e.g., "status", "dropdown", "text", "date") """ type: ColumnType! "The column title" title: String! "Optional column description" description: String "Type-specific configuration object containing column defaults and settings. Use get_column_type_schema query to see available properties and validation rules. Examples: status column labels, dropdown options, number formatting rules, date display preferences." defaults: JSON "Whether this column should be opted-out by default on boards. If false or not provided, the column will be automatically included on all boards using this object schema (opt-in by default)." opt_out_by_default: Boolean "Policy rules controlling what can be done with the column" policy: ColumnPolicyInput! } "Input for the create_object_schema_columns action." input CreateObjectSchemaColumnsActionInput { "Array of columns to create." columns: [CreateObjectSchemaColumnInput!]! } input CreateStatusColumnSettingsInput { labels: [CreateStatusLabelInput!]! } input CreateStatusLabelInput { label: String! color: StatusColumnColors! index: Int! description: String is_done: Boolean } "A data view that aggregates data from multiple sources into a unified structure." type DataView { "The unique identifier of the data view." id: ID "The name of the data view." name: String "The description of the data view." description: String "The target schema of the data view." target: DataViewTarget "The authorization object associated with the data view." authorization_object: DataViewAuthorizationObject "The paginated sources of the data view." sources: DataViewPaginatedSources "The account identifier." account_id: ID "The user identifier of the creator." created_by: Int "The date and time of creation." created_at: Date "The date and time of the last update." updated_at: Date "The revision number of the data view." revision: Int "Whether the data view is archived." archived: Boolean } "The kind of object that authorizes access to a data view." enum DataViewAuthorizationKind { BOARD } "The authorization object associated with a data view." type DataViewAuthorizationObject { "The identifier of the authorization object." id: ID "The type of the authorization object." type: String } "The authorization object that gates access to the data view." input DataViewAuthorizationObjectInput { "The identifier of the authorization object." id: ID! "The type of the authorization object." type: DataViewAuthorizationKind! } "The result of calculating a data view target schema and per-source column mappings." type DataViewAutomapping { "The calculated (or provided) target schema." target: DataViewTarget "The calculated sources with their mappings and errors." sources: DataViewAutomappingSources } "The calculated sources of a data view automapping, each with its computed mappings and errors." type DataViewAutomappingSources { "The calculated sources." items: [DataViewSource!] } "A column definition within a data view target." type DataViewColumn { "The unique identifier of the column." id: ID "The display title of the column." title: String "The column type." type: String "For mirror/lookup columns, the type of the column being displayed." sub_type: String "The column settings." settings: JSON "The column labels." labels: JSON "The column label positions." labels_positions_v2: JSON "Whether the column is archived." archived: Boolean "The column description." description: String "The column model identifier." column_model_id: ID "The column model strategy." column_model_strategy: String "The global column identifier." global_column_id: ID "The numeric column unit settings." unit: JSON } "A column definition within a data view target." input DataViewColumnInput { "The unique identifier of the column." id: ID! "The display title of the column." title: String "The column type." type: String "For mirror/lookup columns, the type of the column being displayed." sub_type: ColumnType "The column settings." settings: JSON "The column labels." labels: JSON "The column label positions." labels_positions_v2: JSON "Whether the column is archived." archived: Boolean "The column description." description: String "The column model identifier." column_model_id: ID "The column model strategy." column_model_strategy: String "The global column identifier." global_column_id: ID "The numeric column unit settings." unit: JSON } "A column-level error indicating an issue with a specific column in the source." type DataViewColumnLevelError { "The error type discriminator." type: String "The error code." error: String "The identifier of the column with the error." column_id: ID } "A mapping between a source column and a target column." type DataViewColumnMapping { "The source column identifier." source_column_id: ID "The target column identifier." target_column_id: ID } "A mapping between a source column and a target column." input DataViewColumnMappingInput { "The source column identifier." source_column_id: ID! "The target column identifier." target_column_id: ID! } "A paginated list of data view sources." type DataViewPaginatedSources { "The data view sources for the current page." items: [DataViewSource!] "The pagination metadata." pagination: DataViewPaginationMetadata } "Pagination metadata for data view sources." type DataViewPaginationMetadata { "The current page number." page: Int "The number of items per page." page_size: Int "The total number of items." total_count: Int "The total number of pages." total_pages: Int } "A union of possible data view source types." union DataViewSource = StandaloneBoardDataViewSource | ChildBoardDataViewSource | EntityDataViewSource "A column of a data view source, used to render source column options." type DataViewSourceColumn { "The column identifier." id: ID "The column title." title: String "The column type." type: String } "A union of possible source errors." union DataViewSourceError = DataViewColumnLevelError "The identifier of a data view source, consisting of an id and type that uniquely identify the source" type DataViewSourceId { "The object identifier." object_id: ID "The object type." object_type: String } "The identifier of a data view source, consisting of an id and type that uniquely identify the source." input DataViewSourceIdInput { "The object identifier." object_id: ID! "The object type." object_type: DataViewSourceKind! } "A source to include in a data view." input DataViewSourceInput { "The source identifier." source_id: DataViewSourceIdInput! "The column mappings for this source. If omitted, mappings are auto-calculated by the server." mappings: [DataViewColumnMappingInput!] } "The kind of object backing a data view source." enum DataViewSourceKind { BOARD DATA_ENTITY } "The target schema of a data view, defining the unified column structure." type DataViewTarget { "The columns in the target schema." columns: [DataViewColumn!] "The column configurations for the target." column_configurations: JSON } "The target schema of a data view, defining the unified column structure." input DataViewTargetInput { "The columns in the target schema." columns: [DataViewColumnInput!]! "The column configurations for the target, keyed by column id." column_configurations: JSON } "Input for the delete_object_schema_columns action." input DeleteObjectSchemaColumnsActionInput { "The IDs of the columns to delete." column_ids: [ID!]! } "Reasons why specific actions are disabled on a column" input DisabledReasonInput { "Reason why the column cannot be deleted" delete: String "Reason why the column title cannot be edited" edit_title: String "Reason why the column labels cannot be edited" edit_labels: String "Reason why the column settings cannot be edited" edit_settings: String "Reason why the column description cannot be edited" edit_description: String "Reason why the column label positions cannot be edited" edit_labels_positions_v2: String } type DropdownColumnSettings { type: ManagedColumnTypes labels: [DropdownLabel!] } type DropdownLabel { id: Int label: String is_deactivated: Boolean } type DropdownManagedColumn { id: String title: String description: String settings_json: JSON created_by: ID updated_by: ID revision: Int state: ManagedColumnState "The date and time of creation." created_at: Date "The date and time of the last update." updated_at: Date settings: DropdownColumnSettings } "Overridable settings for dropdown columns attached to a managed column." input DropdownSettingsOverridesInput { "Whether to limit the number of selectable labels." limit_select: Boolean "Maximum number of labels that can be selected when limit_select is enabled." label_limit_count: Int } "A schema-type data view source." type EntityDataViewSource { "The source identifier." source_id: DataViewSourceId "The column mappings for this source." mappings: [DataViewColumnMapping!] "The errors associated with this source." errors: [DataViewSourceError!] "The live columns of this source. Populated by the automapping query." columns: [DataViewSourceColumn!] "Number of child board sources under this schema." children_count: Int } type ManagedColumn { id: String title: String description: String settings_json: JSON created_by: ID updated_by: ID revision: Int state: ManagedColumnState "The date and time of creation." created_at: Date "The date and time of the last update." updated_at: Date settings: ColumnSettings } enum ManagedColumnState { active deleted inactive } enum ManagedColumnTypes { status dropdown } "Represents an account-level object schema that can be customized per account." type ObjectSchema { "The unique identifier of the object schema." id: ID! "The account ID this object schema belongs to." account_id: ID! "The user ID who created this object schema." created_by: ID! "The revision number for optimistic locking." revision: Int! "The date and time of creation." created_at: Date "The date and time of the last update." updated_at: Date "The columns defined in this object schema." columns: [ObjectSchemaColumn!]! "The ID of the parent object schema (typically a global object schema)." parent_id: ID "The name of this object schema." name: String "The description for this object schema." description: String "The number of boards connected to this object schema." connected_boards_count: Int! } "The type of column action to perform in a bulk object schema mutation." enum ObjectSchemaAction { CREATE_OBJECT_SCHEMA_COLUMNS UPDATE_OBJECT_SCHEMA_COLUMNS DELETE_OBJECT_SCHEMA_COLUMNS } "A single action in a bulk object schema mutation. Provide the action type and the corresponding input field." input ObjectSchemaActionInput { "The type of action to perform." action: ObjectSchemaAction! "Input for create_object_schema_columns action. Required when action is create_object_schema_columns." create_object_schema_columns: CreateObjectSchemaColumnsActionInput "Input for update_object_schema_columns action. Required when action is update_object_schema_columns." update_object_schema_columns: UpdateObjectSchemaColumnsActionInput "Input for delete_object_schema_columns action. Required when action is delete_object_schema_columns." delete_object_schema_columns: DeleteObjectSchemaColumnsActionInput } "Result of a single action within a bulk object schema mutation." type ObjectSchemaActionResult { "The type of action that was performed." action: ObjectSchemaAction "The resulting object schema after the action." object_schema: ObjectSchema } "A column definition within an object schema." type ObjectSchemaColumn { "The unique identifier of the column." id: ID "The column's title." title: String! "The column's type." type: ColumnType "The column's description." description: String "The column's settings in a JSON form." settings: JSON "Policy rules for this column." policy: ObjectSchemaColumnPolicy "Tags indicating column status (deprecated, inherited, etc.)." tags: ObjectSchemaColumnTags } "Policy rules governing how an object schema column can be modified." type ObjectSchemaColumnPolicy { "List of column properties that can be overridden by board-level columns." can_override: [String!]! "Whether this column is protected from deletion." cannot_delete: Boolean! "Whether this column is read-only." read_only: Boolean! "Policy-related messages, such as disabled reasons." messages: JSON } "Tags applied to an object schema column indicating its status or behavior." type ObjectSchemaColumnTags { "Deprecation info with a start timestamp, if the column is deprecated." deprecated: JSON "Opt-in by default info with an optional end timestamp." opt_in_by_default: JSON "Whether this column is inherited from a parent object schema." inherited: Boolean } "Policy messages that explain why certain actions are disabled on a column" input PolicyMessagesInput { "Structured reasons for disabled actions" disabled_reason: DisabledReasonInput } "A standalone board-type data view source." type StandaloneBoardDataViewSource { "The source identifier." source_id: DataViewSourceId "The column mappings for this source." mappings: [DataViewColumnMapping!] "The errors associated with this source." errors: [DataViewSourceError!] "The live columns of this source. Populated by the automapping query." columns: [DataViewSourceColumn!] } "Input for configuring calculated capability settings on a status column" input StatusCalculatedCapabilityInput { "Function to calculate the values. For status columns, only COUNT_KEYS function is supported." function: StatusCalculatedFunction! } "Available functions for calculating values in status column capabilities" enum StatusCalculatedFunction { COUNT_KEYS } "Input for configuring status column capabilities during creation" input StatusColumnCapabilitiesInput { "Calculated capability settings. If provided, enables calculated functionality for the status column." calculated: StatusCalculatedCapabilityInput } enum StatusColumnColors { working_orange done_green stuck_red dark_blue purple explosive grass_green bright_blue saladish egg_yolk blackish dark_red sofia_pink lipstick dark_purple bright_green chili_blue american_gray brown dark_orange sunset bubble peach berry winter river navy aquamarine indigo dark_indigo pecan lavender royal steel orchid lilac tan sky coffee teal } type StatusColumnSettings { type: ManagedColumnTypes labels: [StatusLabel!] } type StatusLabel { id: Int label: String color: StatusColumnColors index: Int description: String is_deactivated: Boolean is_done: Boolean } type StatusManagedColumn { id: String title: String description: String settings_json: JSON created_by: ID updated_by: ID revision: Int state: ManagedColumnState "The date and time of creation." created_at: Date "The date and time of the last update." updated_at: Date settings: StatusColumnSettings } input UpdateDropdownColumnSettingsInput { labels: [UpdateDropdownLabelInput!]! "Whether to limit the number of labels that can be selected" limit_select: Boolean "Maximum number of labels that can be selected when limit_select is enabled" label_limit_count: Int } input UpdateDropdownLabelInput { label: String! id: Int is_deactivated: Boolean } "Input for updating an existing column on an object schema" input UpdateObjectSchemaColumnInput { "The ID of the column to update" column_id: ID! "The column title" title: String "Optional column description" description: String "Type-specific configuration object containing column defaults and settings. Use get_column_type_schema query to see available properties and validation rules. Examples: status column labels, dropdown options, number formatting rules, date display preferences." defaults: JSON "Whether this column should be opted-out by default on boards. If false, the column will be automatically included on all boards using this object schema (opt-in by default)." opt_out_by_default: Boolean "Policy rules controlling what can be done with the column" policy: ColumnPolicyInput } "Input for the update_object_schema_columns action." input UpdateObjectSchemaColumnsActionInput { "Array of column updates." columns: [UpdateObjectSchemaColumnInput!]! } input UpdateStatusColumnSettingsInput { labels: [UpdateStatusLabelInput!]! } input UpdateStatusLabelInput { label: String! color: StatusColumnColors! index: Int! description: String is_done: Boolean id: Int is_deactivated: Boolean } "Result of activating a workflow" type ActivateWorkflowResult { "Whether the workflow was successfully activated" is_success: Boolean! } "A block in the framework" type Block { "Unique identifier for the block" id: Int "Unique key of the block" uniqueKey: String "Name of the block" name: String "Description of the block" description: String "Type of the block" kind: String "Whether the block is deprecated" is_deprecated: Boolean "Configuration for input fields. To fetch the available options of a specific input field, first query the block requesting the `fieldTypeData` for that field and then call the `remote_options` query using the resulting `fieldTypeReferenceId`." inputFieldsConfig: [InputFieldConfig!] "Configuration for output fields" outputFieldsConfig: [OutputFieldConfig!] "Context-specific data for the block, organized by context name" context_data: BlockContextData } "Context-specific data for a block, organized by context name" type BlockContextData { "Context data for the workflow builder" workflow_builder: WorkflowBuilderContextData "Context data for the lite builder" lite_builder: LiteBuilderContextData "Context data for Monday agents" monday_agents: MondayAgentsContextData } "Result of a blocks query" type BlocksResult { "List of blocks" blocks: [Block!] } "Result of changing workflow owner" type ChangeWorkflowOwnerResult { "Whether the workflow owner was successfully changed" is_success: Boolean! } "Represents an integration connection between a monday.com account and an external service." type Connection { "Unique identifier of the connection." id: Int "Identifier of the monday.com account that owns the connection." accountId: Int "Identifier of the user who created the connection." userId: Int "External service provider of the connection (e.g., gmail, slack)." provider: String "Human-readable display name for the connection." name: String "Authentication method used by the connection (e.g., oauth, token_based)." method: String "Identifier of the linked account at the provider side." providerAccountIdentifier: String "Current state of the connection (e.g., active, inactive)." state: String "ISO timestamp when the connection was created." createdAt: String "ISO timestamp when the connection was last updated." updatedAt: String } "Input for creating a workflow from a template" input CreateWorkflowFromTemplateInput { "Title of the workflow" title: String! "Detailed description of the workflow" description: String "The reference ID of the workflow template to create the workflow from" template_reference_id: ID! "A map of workflow variable keys to their configuration values. Each value can contain: value, title, icon, and dependencies" workflow_variables_values: JSON "Variables used within this workflow. To get the accurate JSON schema call the GraphQL query 'get_workflow_variable_schemas' These variables will be appended to the template workflow variables." workflow_variables: [JSON!] "ID of the creator app" creator_app_id: ID! "Reference ID of the creator app feature" creator_app_feature_reference_id: ID "Hierarchy level the workflow is hosted in If omitted, defaults to account-level with the current account ID." workflow_host_data: WorkflowHostDataInput } type CreateWorkflowResult { "Workflow numeric ID (supports both integer and bigint)" id: String } "The access level for CRUD operations on a workflow" enum CrudAccessLevel { USER ACCOUNT } "Result of deactivating a workflow" type DeactivateWorkflowResult { "Whether the workflow was successfully deactivated" is_success: Boolean! } type DeleteWorkflowResult { "Whether the workflow was successfully deleted" is_success: Boolean! } "Defines mandatory and optional dependencies that must be populated to allow resolving the field dynamic values" type DependencyConfig { "Required dependencies evaluated in order" orderedMandatoryFields: [DependencyField!] "Non-required dependencies that refine the dynamic values request but do not block enablement" optionalFields: [DependencyField!] } "Maps a source field-type to the key name expected in the dynamic-values payload for this dependency" type DependencyField { "Reference ID of the field-type that supplies the dependency value" sourceFieldTypeReferenceId: Int "Unique key of the source field type" sourceFieldTypeUniqueKey: String "JSON key that the backend expects for this dependency value" targetFieldKey: String } "Result of detaching managed workflows from a template for a given host instance" type DetachWorkflowsFromTemplateResult { "Number of workflows successfully detached from template" workflows_detached_count: Int! "Number of workflows that failed to detach" workflows_failed_count: Int! } "Information about a field" type FieldInformation { "The text content of the field information" text: String "A link to more information" link: JSON } "A field type in the framework" interface FieldType { "Unique identifier for the field type" id: Int "Unique key of the field type" uniqueKey: String "Name of the field type" name: String "Description of the field type" description: String "Current state of the field type" state: FieldTypeState "Unique key identifier for the field type" key: String "Default key for fields of this type" defaultFieldKey: String "Dependency configuration specifying mandatory and optional field dependencies required to enable this field and compute its dynamic values. When fetching the permitted values for custom input fields via the remote_options query, you must provide these dependencies in the query input." dependencyConfig: DependencyConfig "List of field type implementations" implement: [FieldTypeImplementation!] "Indicates whether this field type fetches its options from a remote source" has_remote_options: Boolean } "An interface (app feature) that a field type implements" type FieldTypeImplementation { "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" enum FieldTypeRelationType { PRIMITIVE INTERFACE CUSTOM } "The state of a field type" enum FieldTypeState { ACTIVE DELETED } "Input parameters for getting blocks" input GetBlocksInput { "Optional array of app feature unique keys to filter blocks" app_feature_unique_keys: [String!] "Optional array of contexts to filter blocks" contexts: [String!] } enum HostType { APP_FEATURE_OBJECT BOARD ACCOUNT_LEVEL } "Interface for input field configuration" interface InputFieldConfig { "Unique identifier for the field" id: Int "Key identifier for the field" fieldKey: String "Display title for the field" fieldTitle: String "Whether the field can be null" isNullable: Boolean "Whether the field is an array type" isArray: Boolean "Whether the field is optional" isOptional: Boolean "Additional information about the field" information: FieldInformation "Detailed description of the field" description: FieldInformation "Type of the field relation" type: FieldTypeRelationType } "Input field constraints" type InputFieldConstraints { "Dependencies for remote options that affect this field" remoteOptionsDependencies: JSON "Dependencies that affect this field's behavior or validation" dependencies: JSON "Dependencies between this field and its subfields" subFieldsDependencies: JSON "Credential dependencies required for this field" credentials: JSON } "Context data for the lite builder, including sentence configuration and field source mappings" type LiteBuilderContextData { "Sentence template parts (array of strings and sentence part objects)" sentence: JSON "Mapping of inbound field keys to their source configuration" source_config: JSON "Category for the block in the lite builder menu" menu_category: String "Configuration for sentence part views (container type, content, header)" sentence_part_configurations: JSON "Overrides for inbound field display properties (title, placeholder, header)" 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" block_name: String "Keys of fields that should be hidden in the agents context" hidden_field_keys: [String!] } "Data required to request the next page of remote options" type NextPageRequestData { "The page identifier to request" page: JSON "Optional cursor for cursor-based pagination" cursor: JSON } "A single option in a remote options list" type Option { "The value of the 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" interface OutputFieldConfig { "Unique identifier for the field" id: Int "Key identifier for the field" fieldKey: String "Display title for the field" fieldTitle: String "Whether the field can be null" isNullable: Boolean "Whether the field is an array type" isArray: Boolean "Whether the field is optional" isOptional: Boolean "Additional information about the field" information: FieldInformation "Detailed description of the field" description: FieldInformation "Type of the field relation" type: FieldTypeRelationType } "Output field constraints" type OutputFieldConstraints { "Dependencies that affect this field's output behavior" dependencies: JSON "Dependencies between this field and its subfields in the output" subFieldsDependencies: JSON "Credential dependencies required for this field's output" credentials: JSON } "Pagination parameters for queries" input PaginationInput { "Maximum number of results to return" limit: Int "Last ID for cursor-based pagination" lastId: Int } "The primitive types supported by the system" enum PrimitiveTypes { STRING NUMBER FLOAT BOOLEAN DATE HOUR } "Input type for requesting remote options for a field type, including dependencies, credentials, pagination, and search query." input RemoteOptionsInput { "The unique key of the field type" field_type_unique_key: String! """ Map all the dependencies fieldKeys to their values. Example: { "my-field-key": { value: 123 }, "my-other-field-key": { value: 456 } } .The schema is: Record """ dependencies_values: JSON """ Map a credentialsKey to the credentials data. Example: { "my-credentials-key": { userCredentialsId: 123, accessToken: "abc" } } """ credentials_values: JSON "Pagination data matching the schema of the field's remote options pagination data" page_request_data: JSON "Search query" query: String "Request specific values to fetch their title" values_to_fetch: JSON } "Response containing a list of remote options and pagination information" type RemoteOptionsResponse { "List of available options" options: [Option!] "Whether the options list supports pagination" isPaginated: Boolean "Whether this is the last page of options" isLastPage: Boolean "Data required to fetch the next page of options" nextPageRequestData: NextPageRequestData "Optional disclaimer text to display with the options" disclaimer: String } "Result of saving a workflow as a template" type SaveWorkflowAsTemplateResult { "AppFeature reference ID of the created template" template_reference_id: ID! } "The type of transformation to apply to the workflow variable's value" enum TransformationType { DIRECT DYNAMIC_TEXT DYNAMIC_NUMBER ARRAY DATE HOUR } "Input for updating a workflow created from a template" input UpdateWorkflowFromTemplateInput { "Workflow numeric ID (supports both integer and bigint)" id: ID! "A map of workflow variable keys to their configuration values. Each value can contain: value, title, icon, and dependencies" workflow_variables_values: JSON "Variables used within this workflow. To get the accurate JSON schema call the GraphQL query 'get_workflow_variable_schemas'" workflow_variables: [JSON!] "Title of the workflow" title: String "Detailed description of the workflow" description: String "Importance level of the workflow" importance: Int } input UpdateWorkflowInput { "ID of the workflow to update" id: ID! "New set of workflow blocks to replace existing ones" workflowBlocks: [WorkflowBlockInput!]! "Variables used within this workflow. To get the accurate JSON schema call the GraphQL query 'get_workflow_variable_schemas'" workflowVariables: [JSON!]! """ Optional array of iterator (loop) configurations. Currently supports forEach iterators only. Each iterator loops over a collection, executing specified workflow blocks once per item. REQUIRED SETUP per iterator: (1) Add an isLoopEnded workflow variable to workflowVariables with sourceKind "auto_calculated_runtime_data" and sourceMetadata { dataType: "iteratorMetadata", metadata: { iteratorId: , fieldKey: "isLoopEnded" } }. (2) Add a boolean true constant variable with sourceKind "constant", sourceMetadata: {}, config: { value: true }. (3) Configure the entry node with Routes-type nextWorkflowBlocksConfig using conditions that compare isLoopEnded to the true constant to route between continue (internal node) and exit (post_iterator_node_id). Nested iterators are not supported yet. Iterator IDs must be unique across the workflow. """ iterators: [WorkflowIteratorInput!] } input UpdateWorkflowMetadataInput { "ID of the workflow to update" id: ID! "New title for the workflow" title: String "New description for the workflow" description: String "Importance level of the workflow" importance: Int } type UpdateWorkflowResult { "Workflow numeric ID (supports both integer and bigint)" id: String } type Workflow { "Workflow numeric ID (supports both integer and bigint)" id: ID! "User ID who owns the workflow" user_id: Int! "Whether the workflow is currently active" is_active: Boolean! "Automation ID associated with the workflow" automation_id: ID! "Last updated timestamp of the workflow" updated_at: Date! "Created timestamp of the workflow" created_at: Date! "Importance level of the workflow" importance: Int "Title of the workflow" title: String! "Detailed description of the workflow" description: String! "Define the workflow's steps and the configuration of each step" workflow_blocks: [WorkflowBlock!]! "Variables used within this workflow. To get the accurate JSON schema call the GraphQL query 'get_workflow_variable_schemas'" workflow_variables: JSON! "Hierarchy level the workflow is hosted in" workflow_host_data: WorkflowHostData! "Notice/Error message for the workflow" notice_message: String "Reference ID of the template this workflow was created from, if any" template_reference_id: ID """ Optional array of iterator (loop) configurations. Currently supports forEach iterators only. Each iterator loops over a collection, executing specified workflow blocks once per item. REQUIRED SETUP per iterator: (1) Add an isLoopEnded workflow variable to workflowVariables with sourceKind "auto_calculated_runtime_data" and sourceMetadata { dataType: "iteratorMetadata", metadata: { iteratorId: , fieldKey: "isLoopEnded" } }. (2) Add a boolean true constant variable with sourceKind "constant", sourceMetadata: {}, config: { value: true }. (3) Configure the entry node with Routes-type nextWorkflowBlocksConfig using conditions that compare isLoopEnded to the true constant to route between continue (internal node) and exit (post_iterator_node_id). Nested iterators are not supported yet. Iterator IDs must be unique across the workflow. """ iterators: [WorkflowIterator!] } type WorkflowBlock { "Unique node identifier within the workflow" workflowNodeId: Int! "Reference ID of the block" blockReferenceId: Int! "Title of the workflow block" title: String! "Defines the input fields of the workflow block. This corresponds to the input fields defined by the block used in the Workflow Block. You must call the remote_options query to retrieve the allowed values for any custom input field before configuring it." inputFields: [WorkflowBlockInputField!]! "Defines the credential fields for the workflow block. Each field references a workflow variable containing the credential value." credentialFields: [WorkflowBlockCredentialField!] "Configuration for the next workflow blocks. To get the accurate JSON schema call the graphQL query 'get_workflow_block_next_mapping_schemas'. Note: Only the following mapping types are currently supported: routesMapping, waitTriggerMapping." nextWorkflowBlocksConfig: JSON kind: WorkflowBlockKind! } "Credential field configuration for workflow blocks" type WorkflowBlockCredentialField { "The credential field key" fieldKey: String! "Key of the workflow variable containing the credential value. Always a positive number" workflowVariableKey: Int! } "Input for credential field configuration in workflow blocks" input WorkflowBlockCredentialFieldInput { "The credential field key" fieldKey: String! "Key of the workflow variable containing the credential value. Always a positive number" workflowVariableKey: Int! } input WorkflowBlockFieldInput { "The block's field key" fieldKey: String! "Key of the workflow variable defining the configuration for the field key. Always a positive number" workflowVariableKey: Int! } input WorkflowBlockInput { "Unique node identifier within the workflow" workflowNodeId: Int! "Reference ID of the block" blockReferenceId: Int! "Title of the workflow block" title: String! "Defines the input fields of the workflow block. This corresponds to the input fields defined by the block used in the Workflow Block. You must call the remote_options query to retrieve the allowed values for any custom input field before configuring it." inputFields: [WorkflowBlockFieldInput!]! "Defines the credential fields for the workflow block. Each field references a workflow variable containing the credential value." credentialFields: [WorkflowBlockCredentialFieldInput!] "Configuration for the next workflow blocks. To get the accurate JSON schema call the graphQL query 'get_workflow_block_next_mapping_schemas'. Note: Only the following mapping types are currently supported: routesMapping, waitTriggerMapping." nextWorkflowBlocksConfig: JSON kind: WorkflowBlockKind } type WorkflowBlockInputField { "The block's field key" fieldKey: String! "Key of the workflow variable defining the configuration for the field key. Always a positive number" workflowVariableKey: Int! } "The kind of workflow block. This is the type of the block that is used in the UI" enum WorkflowBlockKind { WAIT } "The json schema definition for a given workflow block next mapping kind" type WorkflowBlockNextMappingSchema { "The kind of workflow block next mapping" kind: String "JSON schema for this workflow block next mapping kind" schema: JSON } "Context data for the workflow builder" type WorkflowBuilderContextData { "Keys of input fields that should be hidden in the workflow builder" hidden_input_fields_keys: [String!] } "Customization settings for the workflow" input 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)." crud_access_level: CrudAccessLevel } "Hierarchy level the workflow is hosted in" type WorkflowHostData { "Type of host for this workflow" type: HostType! "Instance ID of the host" id: String } "Host data for the workflow. Both id and type must be provided together. If omitted, defaults to account-level with the current account ID." input WorkflowHostDataInput { "Instance ID of the host" id: String "Type of host for this workflow" type: HostType } input WorkflowInput { "Title of the workflow" title: String! "Detailed description of the workflow" description: String! "Define the workflow's steps and the configuration of each step" workflowBlocks: [WorkflowBlockInput!]! "Variables used within this workflow. To get the accurate JSON schema call the GraphQL query 'get_workflow_variable_schemas'" workflowVariables: [JSON!]! "Hierarchy level the workflow is hosted in If omitted, defaults to account-level with the current account ID." workflowHostData: WorkflowHostDataInput "Reference ID of the creator app feature" creatorAppFeatureReferenceId: Int "ID of the creator app" creatorAppId: Int "Customization settings for the workflow" customization: WorkflowCustomizationInput """ Optional array of iterator (loop) configurations. Currently supports forEach iterators only. Each iterator loops over a collection, executing specified workflow blocks once per item. REQUIRED SETUP per iterator: (1) Add an isLoopEnded workflow variable to workflowVariables with sourceKind "auto_calculated_runtime_data" and sourceMetadata { dataType: "iteratorMetadata", metadata: { iteratorId: , fieldKey: "isLoopEnded" } }. (2) Add a boolean true constant variable with sourceKind "constant", sourceMetadata: {}, config: { value: true }. (3) Configure the entry node with Routes-type nextWorkflowBlocksConfig using conditions that compare isLoopEnded to the true constant to route between continue (internal node) and exit (post_iterator_node_id). Nested iterators are not supported yet. Iterator IDs must be unique across the workflow. """ iterators: [WorkflowIteratorInput!] } "Iterator configuration for looping over collections within a workflow" type WorkflowIterator { "Unique positive integer identifier for the iterator. Must be unique across all iterators in the workflow. This ID is referenced by the isLoopEnded workflow variable in its sourceMetadata.metadata.iteratorId field." iterator_id: ID! "List of all workflow block node IDs that belong to this loop. Must include entry_node_id. Must NOT include post_iterator_node_id. Every node ID must correspond to a workflowNodeId in the workflow blocks. Nested iterators are not supported: an iterator entry node must not appear in another iterator's node_ids. Terminal nodes within the iterator (those with null nextWorkflowBlocksConfig) are automatically routed back to the entry node." node_ids: [ID!]! """ The workflow node ID that serves as the loop entry point. Must be included in node_ids. This node's nextWorkflowBlocksConfig MUST use type "Routes" with conditions referencing the isLoopEnded workflow variable: one route to post_iterator_node_id (when isLoopEnded IS equal to true, to exit the loop) and one route to an internal iterator node (when isLoopEnded IS NOT equal to true, to continue the loop). When post_iterator_node_id is not null, an exit route targeting it is required. """ entry_node_id: ID! "Node ID that executes after the iterator completes all iterations. Set to null if no action should follow the loop (workflow ends after the loop). Must NOT be included in node_ids. When not null, the entry node's Routes config must include an exit route targeting this node." post_iterator_node_id: ID "Workflow variable key referencing the collection to iterate over (forEach). The referenced variable must resolve to an array at runtime. The iterator executes the loop body once per item in the collection." collection_workflow_variable_key: ID! "Optional workflow variable key containing the maximum number of iterations. When provided, the actual iteration count is min(collection length, max iterations value). When omitted, the iterator processes the entire collection." max_iterations_workflow_variable_key: Int } """ Configuration for a forEach iterator that loops over a collection. REQUIRED WORKFLOW VARIABLES: For each iterator, the workflowVariables array must include: (1) An isLoopEnded variable with sourceKind "auto_calculated_runtime_data" and sourceMetadata { dataType: "iteratorMetadata", metadata: { iteratorId: , fieldKey: "isLoopEnded" } }. (2) A boolean true constant variable with sourceKind "constant", sourceMetadata: {}, and config: { value: true }. ENTRY NODE SETUP: The entry node must use a Routes-type nextWorkflowBlocksConfig with conditions comparing the isLoopEnded variable key to the true constant variable key: one route with operator "Is" pointing to post_iterator_node_id (exit loop), and one route with operator "IsNot" pointing to an internal iterator node (continue loop). Terminal nodes inside the iterator (with null nextWorkflowBlocksConfig) are automatically routed back to the entry node. """ input WorkflowIteratorInput { "Unique positive integer identifier for the iterator. Must be unique across all iterators in the workflow. This ID is referenced by the isLoopEnded workflow variable in its sourceMetadata.metadata.iteratorId field." iterator_id: Int! "List of all workflow block node IDs that belong to this loop. Must include entry_node_id. Must NOT include post_iterator_node_id. Every node ID must correspond to a workflowNodeId in the workflow blocks. Nested iterators are not supported: an iterator entry node must not appear in another iterator's node_ids. Terminal nodes within the iterator (those with null nextWorkflowBlocksConfig) are automatically routed back to the entry node." node_ids: [Int!]! """ The workflow node ID that serves as the loop entry point. Must be included in node_ids. This node's nextWorkflowBlocksConfig MUST use type "Routes" with conditions referencing the isLoopEnded workflow variable: one route to post_iterator_node_id (when isLoopEnded IS equal to true, to exit the loop) and one route to an internal iterator node (when isLoopEnded IS NOT equal to true, to continue the loop). When post_iterator_node_id is not null, an exit route targeting it is required. """ entry_node_id: Int! "Node ID that executes after the iterator completes all iterations. Set to null if no action should follow the loop (workflow ends after the loop). Must NOT be included in node_ids. When not null, the entry node's Routes config must include an exit route targeting this node." post_iterator_node_id: ID "Workflow variable key referencing the collection to iterate over (forEach). The referenced variable must resolve to an array at runtime. The iterator executes the loop body once per item in the collection." collection_workflow_variable_key: Int! "Optional workflow variable key containing the maximum number of iterations. When provided, the actual iteration count is min(collection length, max iterations value). When omitted, the iterator processes the entire collection." max_iterations_workflow_variable_key: Int } "The context where a workflow template can be accessed" enum WorkflowTemplateContext { LITE_BUILDER } "Input data for creating a workflow template" input WorkflowTemplateInput { "Name of the template" name: String! "Description of the template" description: String! "URL of the image for the template" image_url: String "Define the workflow's steps and the configuration of each step" workflow_blocks: [WorkflowTemplateWorkflowBlockInput!]! "Variables used within this workflow. To get the accurate JSON schema call the GraphQL query 'get_workflow_variable_schemas'" workflow_variables: [JSON!]! "Contexts that the template should be accessible from" contexts: [WorkflowTemplateContext!] } "Defines the input fields of the workflow block. This corresponds to the input fields defined by the block used in the Workflow Block. You must call the remote_options query to retrieve the allowed values for any custom input field before configuring it." input WorkflowTemplateWorkflowBlockFieldInput { "Key of the workflow variable defining the configuration for the field key. Always a positive number" workflow_variable_key: Int! "The block's field key" field_key: String! } "Define the workflow's steps and the configuration of each step" input WorkflowTemplateWorkflowBlockInput { "Unique node identifier within the workflow" workflow_node_id: Int! "Reference ID of the block" block_reference_id: Int! "Title of the workflow block" title: String! "Defines the input fields of the workflow block. This corresponds to the input fields defined by the block used in the Workflow Block. You must call the remote_options query to retrieve the allowed values for any custom input field before configuring it." input_fields: [WorkflowTemplateWorkflowBlockFieldInput!]! "Configuration for the next workflow blocks. To get the accurate JSON schema call the graphQL query 'get_workflow_block_next_mapping_schemas'. Note: Only the following mapping types are currently supported: routesMapping, waitTriggerMapping." next_workflow_blocks_config: JSON } "The kind and JSON schema definition for a given workflow variable kind" type WorkflowVariableSchema { "The kind of workflow variable" kind: WorkflowVariableSourceKind "JSON schema of the workflow variable" schema: JSON } enum WorkflowVariableSourceKind { user_config node_results reference host_metadata external_context_provider } "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 } "Subscription object" type AppSubscriptionDetails { "The ID of an account" account_id: Int! "The ID of a pricing plan" plan_id: String! "The ID of a pricing version" pricing_version_id: Int! "The monthly price of the product purchased in the given currency, after applying discounts" monthly_price: Float! "The currency, in which the product was purchased" currency: String! period_type: SubscriptionPeriodType! "The date the active subscription is set to renew. Equals to null for inactive subscriptions" renewal_date: String "The date the the inactive subscription ended. Equals to null for active subscriptions" end_date: String status: SubscriptionStatus! discounts: [SubscriptionDiscount!]! "The number of days left until the subscription ends" days_left: Int! } type AppSubscriptions { subscriptions: [AppSubscriptionDetails!]! "Total number of subscriptions matching the given parameters" total_count: Int! "The value, which identifies the exact point to continue fetching the subscriptions from" cursor: String } "A granted marketplace app discount offer" type CreateMarketplaceAppDiscount { "Number of days a discount will be valid" days_valid: Int! "Percentage value of a discount" discount: Int! "Is discount recurring" is_recurring: Boolean! "The period of a discount" period: DiscountPeriod "List of app plan ids" app_plan_ids: [ID!] "The id of an app" app_id: ID! } "Input data for creating a marketplace app discount" input CreateMarketplaceAppDiscountInput { "Number of days a discount will be valid" days_valid: Int! "Percentage value of a discount" discount: Int! "The period of a discount" period: DiscountPeriod "List of app plan ids" app_plan_ids: [ID!]! } "Result of granting a marketplace app discount offer" type CreateMarketplaceAppDiscountResult { "The granted discount offer" granted_discount: CreateMarketplaceAppDiscount! } type DeleteMarketplaceAppDiscount { "Slug of an account" account_slug: String! "The id of an app" app_id: ID! } type DeleteMarketplaceAppDiscountResult { deleted_discount: DeleteMarketplaceAppDiscount! } "The period of a discount" enum DiscountPeriod { MONTHLY YEARLY } type GrantMarketplaceAppDiscount { "Number of days a discount will be valid" days_valid: Int! "Percentage value of a discount" discount: Int! "Is discount recurring" is_recurring: Boolean! period: DiscountPeriod "List of app plan ids" app_plan_ids: [String!]! "The id of an app" app_id: ID! } input GrantMarketplaceAppDiscountData { "Number of days a discount will be valid" days_valid: Int! "Percentage value of a discount" discount: Int! "Is discount recurring" is_recurring: Boolean! "The period of a discount" period: DiscountPeriod "List of app plan ids" app_plan_ids: [String!]! } type GrantMarketplaceAppDiscountResult { granted_discount: GrantMarketplaceAppDiscount! } type MarketplaceAppDiscount { "Slug of an account" account_slug: String! "The ID of an account" account_id: ID! "Percentage value of a discount" discount: Int! "Is discount recurring" is_recurring: Boolean! "List of app plan ids" app_plan_ids: [String!]! period: DiscountPeriod "Date until a discount is valid" valid_until: String! "Date when a discount was created" created_at: String! } "The discounts granted to the subscription" type SubscriptionDiscount { "The value of the discount in percentage (e.g. the value 80 refers to 80%)" value: Int! discount_model_type: SubscriptionDiscountModelType! discount_type: SubscriptionDiscountType! } "The information whether the discount is percentage or nominal" enum SubscriptionDiscountModelType { percent nominal } "The information whether the discount has been granted one time or recurring" enum SubscriptionDiscountType { recurring one_time } "The billing period of the subscription. Possible values: monthly, yearly" enum SubscriptionPeriodType { monthly yearly } "The status of the subscription. Possible values: active, inactive." enum SubscriptionStatus { active inactive } "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!] "Read-only automations on this board that were set up in an older way. These ARE automations on the user's board — always list and describe them together with `items`, never omit them. They cannot be activated, deactivated, edited, or deleted. Resolved only for board-scoped queries (null otherwise); best-effort, so it may carry an error marker instead of data." legacy_automations: JSON } "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_BOUNCED EMAIL_DELIVERED EMAIL_SENT EMAIL_RECIPIENT_COMPLAINT EMAIL_RECIPIENT_UNSUBSCRIBED EMAIL_RECIPIENT_GROUP_UNSUBSCRIBED EMAIL_RECIPIENT_GROUP_RESUBSCRIBED EMAIL_DROPPED EMAIL_OPENED 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 SECONDARY ACCENT TEXT 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_LOGO SECONDARY_LOGO ATTACHMENT } "Status of a brand image" enum CampaignsBrandImageStatus { PENDING 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!] "URL of the campaign email template preview image" preview_image: String "HTML content of the email template" template_html: String } "Available facet values for campaign filtering" type CampaignsFacets { "Campaign counts grouped by creator" users: [CampaignsUserFacet!] "Campaign counts grouped by status" statuses: [CampaignsStatusFacet!] } "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 MARKET_TREND CUSTOMER_BEHAVIOR EMERGING_TECHNOLOGY REGULATORY_CHANGE PRODUCT_LAUNCH CRISIS_EVENT OTHER } "Available facet values for insight filtering" type CampaignsInsightFacets { "Insight counts grouped by status" statuses: [CampaignsInsightStatusFacet!] "Insight counts grouped by type" types: [CampaignsInsightTypeFacet!] "Insight counts grouped by source" sources: [CampaignsInsightSourceFacet!] } "Insight count grouped by source" type CampaignsInsightSourceFacet { "Source value" source: String "Number of insights" count: Int } "Insight count grouped by status" type CampaignsInsightStatusFacet { "Status value" status: CampaignsInsightStatusKind "Number of insights" count: Int } "Status of an insight" enum CampaignsInsightStatusKind { ACTIVE CONSUMED DISMISSED } "Insight count grouped by type" type CampaignsInsightTypeFacet { "Classification type" type: CampaignsInsightClassificationKind "Number of insights" count: Int } "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 { NOW 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 } "Fields available for sorting campaigns" enum CampaignsSortField { NAME CREATED_AT } "Sort direction" enum CampaignsSortOrder { ASC DESC } "Campaign count grouped by status" type CampaignsStatusFacet { "Campaign status value" status: CampaignsStatusKind "Number of campaigns with this status" count: Int } "Status of a campaign" enum CampaignsStatusKind { GENERATING DRAFT READY_TO_SEND SENDING SCHEDULED SENT ONGOING FAILED ON_HOLD BLOCKED 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 } "Campaign count grouped by creator" type CampaignsUserFacet { "ID of the user who created the campaigns" user_id: ID "Number of campaigns" count: Int } "A single column value change within a task decision" type ColumnChange { "The identifier of the column that changed" column_id: ID "The previous value of the column before the change" old_value: JSON "The new value of the column after the change" new_value: JSON } "Input for creating a new task" input CreateTaskInput { "The task title" title: String! "The task description (default: empty string)" description: String "The initial status (default: TODO)" status: CreateTaskStatus "The task priority (default: 0)" priority: Int "The task due date, if any" due_date: String } "Statuses allowed when creating a new task (excludes terminal statuses)" enum CreateTaskStatus { PENDING TODO IN_PROGRESS NOT_NOW } "Response containing the current user's task board id" type MyTaskBoardResponse { "The current user's task board id" task_board_id: ID } "Response containing the user's tasks with board metadata" type MyTasksResponse { "The user's tasks" tasks: [Task!] "The user's task board ID" task_board_id: ID "The column prefix for board column IDs" column_prefix: String } "Response containing the current user's priority prompt" type PriorityPromptResponse { "The user's priority prompt for task prioritization" priority_prompt: String } "Payload for processing an event through the task engine" input ProcessEventsInput { "Type of event source (e.g. update_mention)" source_type: TaskIngestionSource! "Unique identifier of the source event" source_id: String! "Account ID" account_id: Int! "User ID (e.g. the mentioned user)" user_id: Int! "Raw JSON string of the event payload" data: String! } "Result of a task board reconciliation" type ReconciliationResult { "Number of tasks successfully reconciled" succeeded: Int "Number of tasks that failed to reconcile" failed: Int } "A task in the user's task board" type Task { "The task ID" id: ID "The task title" title: String "The current status of the task" status: TaskStatus "The task description" description: String "The task priority (higher is more important)" priority: Int "When the task was created" created_at: String "The task due date, if set" due_date: String } "Action taken by the task engine when processing a task" enum TaskAction { CREATE UPDATE } "A changelog entry representing a decision made by the task engine" type TaskDecisionChangelogEvent { "Timestamp when this decision was made" created_at: String "The action taken (create or update)" action: TaskAction "The AI-generated reason explaining why this decision was made" reason: String "A human-readable summary of the changes applied" change_summary: String "The list of individual column value changes in this decision" changes: [ColumnChange!] } "Type of event source for task ingestion" enum TaskIngestionSource { UPDATE_MENTION USER_ASSIGNED } "Status of a task" enum TaskStatus { PENDING TODO IN_PROGRESS NOT_NOW DONE NO_LONGER_RELEVANT NOT_A_TASK } "Response from updating the priority prompt" type UpdatePriorityPromptResponse { "Whether the update succeeded" success: Boolean } "Partial input for updating an existing task" input UpdateTaskInput { "The task title" title: String "The task description" description: String "The task status" status: TaskStatus "The task priority (higher is more important)" priority: Int "The task due date" due_date: String } "Provider-specific data for Claude managed agents" type ClaudeProviderData { "Available environments on this provider" environments: [ProviderResource!] "Available vaults for secret management on this provider" vaults: [ProviderResource!] } "Connect input for a custom external agent reachable via callback URL" input ConnectCustomAgentInput { "The display name for the connected agent" name: String! "The HTTPS callback URL the platform invokes for agent events" callback_url: String! "Optional custom avatar URL for the agent (HTTPS). When omitted, a default avatar is used." avatar_url: String } "Input for connecting an external agent via BYOA (Bring Your Own Agent)" input ConnectExternalAgentInput { "The type of external provider (e.g. CLAUDE_MANAGED_AGENT, CUSTOM_AGENT)" external_provider_type: ExternalProvider! "The unique identifier of the agent on the external provider" external_agent_id: ID! "The credential ID used to authenticate with the external provider" credential_id: ID! "The display name for the connected agent" name: String! "Optional environment identifier on the external provider" environment_id: ID "Optional vault identifier for secret management on the external provider" vault_id: ID "Optional callback URL for agent event notifications" callback_url: String } "Payload returned after initiating an external agent connection (async operation)" type ConnectExternalAgentPayload { """ The connection status (e.g. "connecting"). Final result is delivered via Pusher. """ status: String } "Result of a synchronous external-agent connect. agent_id is always present; signing_secret, api_token, and instructions are populated only for custom agents." type ConnectExternalAgentResult { "The internal monday-agents agent ID" agent_id: ID "Custom-agent only — secret used to sign callback requests. Never logged." signing_secret: String "Custom-agent only — API token for the agent to call back into monday. Never logged." api_token: String "Custom-agent only — setup instructions for the integrator. Never logged." instructions: String } "Wrapper input for the synchronous connect mutation. Currently supports custom agents only." input ConnectExternalAgentSyncInput { "Connect a custom agent." custom: ConnectCustomAgentInput } "Payload returned after disconnecting an external agent" type DisconnectExternalAgentPayload { "Whether the disconnection was successful" success: Boolean } "The type of external agent provider" enum ExternalProvider { CLAUDE_MANAGED_AGENT CUSTOM_AGENT OPENAI } "Provider-specific data, use inline fragments to access fields per provider type" union ExternalProviderData = ClaudeProviderData "A resource (agent, environment, or vault) available on an external provider" type ProviderResource { "The unique identifier of the resource on the provider" id: ID "The display name of the resource" name: String } "Input for updating mutable fields of an existing custom agent" input UpdateCustomAgentInput { "The ID of the custom agent to update" agent_id: Int! "New display name for the agent" name: String "New HTTPS callback URL for agent event notifications. Only valid for CUSTOM_AGENT type." callback_url: String "New custom avatar URL (HTTPS) for the agent." avatar_url: String } "Payload returned after updating a custom agent" type UpdateCustomAgentPayload { "Whether the update was successful" success: Boolean } type AggregateBasicAggregationResult { result: Float } enum AggregateFromElementType { TABLE } input AggregateFromTableInput { "Always TABLE or DATA_VIEW" type: AggregateFromElementType! id: ID! } input AggregateGroupByElementInput { column_id: String! limit: Int } type AggregateGroupByResult { "The string value of the group by result." value_string: String "The integer value of the group by result." value_int: Int "The float value of the group by result." value_float: Float "The boolean value of the group by result." value_boolean: Boolean } input AggregateQueryInput { "Select elements to return. Each element must have either a function or column property. If selecting a column or transformative function, the element must appear in group by." select: [AggregateSelectElementInput!]! "Source to select from (table or data view)" from: AggregateFromTableInput! "Group by elements" group_by: [AggregateGroupByElementInput!] "ItemsQuery filter and sort. If not provided, all items will be returned." query: ItemsQuery "Max number of results to return" limit: Int } type AggregateQueryResult { results: [AggregateResultSet!] } union AggregateResult = AggregateBasicAggregationResult | AggregateGroupByResult type AggregateResultEntry { alias: String value: AggregateResult } type AggregateResultSet { entries: [AggregateResultEntry!] } input AggregateSelectColumnInput { column_id: String! } input AggregateSelectElementInput { "Type of the selected element" type: AggregateSelectElementType! "Column to select. Required if type is COLUMN. If selecting a column, the element must have a matching group by element with the same column_id or alias, if present." column: AggregateSelectColumnInput "Function to select. Required if type is FUNCTION. If selecting a transformative function, the element must have a matching group by element with the same alias. If selecting an aggregative function, the select element must not have a matching group by element." function: AggregateSelectFunctionInput "Alias for the selected element" as: String! } enum AggregateSelectElementType { COLUMN FUNCTION } input AggregateSelectFunctionInput { "Function to select. Required if type is FUNCTION" function: AggregateSelectFunctionName! params: [AggregateSelectElementInput!] } "Function to select. Required if type is FUNCTION" enum AggregateSelectFunctionName { NONE COUNT_ITEMS COUNT_SUBITEMS COUNT COUNT_DISTINCT COUNT_KEYS SUM AVERAGE MEDIAN MIN MAX MIN_MAX BETWEEN DURATION_RUNNING UPPER LOWER TRIM LENGTH FIRST LEFT FLATTEN CASE EQUALS DATE_TRUNC_DAY DATE_TRUNC_WEEK DATE_TRUNC_MONTH DATE_TRUNC_QUARTER DATE_TRUNC_YEAR DATE START_DATE END_DATE HOUR PERSON ID LABEL COLOR ORDER RAW IS_DONE PHONE_COUNTRY_SHORT_NAME } "A single item returned by the items_page query" type ItemResult { "The unique identifier of the item" id: ID "The name of the item" name: String "The state of the item (active, deleted, etc.)" state: String "The ID of the group this item belongs to" group_id: ID "ISO 8601 timestamp of when the item was created" created_at: String "ISO 8601 timestamp of when the item was last updated" updated_at: String "Structured column values" column_values( "A list of column ids to return. Null/empty returns all." ids: [ID!], "A list of column types to return. Null/empty returns all." types: [ItemsPageColumnTypeFilter!], "Capabilities to include. Omit CALCULATED to hide rollup/calculated columns (default)." capabilities: [ItemsPageColumnCapability!]): [ItemsPageColumnValue!] "Subitems of this item" subitems: [ItemResult!] } "A single status-count entry in a battery (status rollup) value." type ItemsPageBatteryValueItem { "The status label index/key." key: ID "Number of items with this status." count: Int } "The calculated (rollup) capability configuration of a column." type ItemsPageCalculatedCapability { "The aggregation function applied to child values." function: ItemsPageCalculatedFunction "The resolved value type of the calculation, when applicable." calculated_type: String } "Aggregation function used by a calculated (rollup) column on a multi-level board." enum ItemsPageCalculatedFunction { COUNT_KEYS MAX MIN MIN_MAX NONE SUM } "Capabilities of a column (e.g. calculated/rollup metadata on multi-level boards)." type ItemsPageColumnCapabilities { "Calculated/rollup capability, present only on rollup columns." calculated: ItemsPageCalculatedCapability } "Column capability flags accepted by the column_values capabilities filter." enum ItemsPageColumnCapability { CALCULATED VISIBILITY } "Column type values accepted by the column_values types filter." enum ItemsPageColumnTypeFilter { auto_number board_relation button checkbox color_picker country creation_log date dependency direct_doc doc dropdown email file formula hour item_id last_updated link location long_text mirror numbers people phone progress rating status subtasks tags text time_tracking timeline unsupported vote week world_clock } "A column value for an item returned by items_page" interface ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "A dropdown option selected in a dropdown column." type ItemsPageDropdownValueOption { "The dropdown item's unique identifier." id: ID "The dropdown item's label." label: String } "Input arguments for the items_page query" input ItemsPageInput { "The board to query. Provide either board_id or data_view_id, not both." board_id: ID "Optional filter and sort configuration" query: ItemsQuery "Page size (default 25, max 500)" limit: Int "Optional group ID to scope the query to a specific group" group_id: String """ For multi-level boards: controls how filters apply across the item hierarchy. Use "allItems" to evaluate filters against parents and subitems and return matches at every level. Accepted values: allItems, parentItems. """ hierarchy_scope_config: String } "A linked item referenced by a relation column." type ItemsPageLinkedItem { "The linked item ID." id: ID "The linked item name." name: String } "A mirrored item containing the mirrored column value." type ItemsPageMirroredItem { "The mirrored column value from the linked item." mirrored_value: ItemsPageColumnValue } "A person or team entity assigned to a people column." type ItemsPagePeopleEntity { "Id of the entity: a person or a team." id: ID "Type of entity." kind: String } "Paginated result set returned by the items_page query" type ItemsPageResult { "Opaque pagination token, null if no more pages" cursor: String "The items in this page of results" items: [ItemResult!] "Linked items (relations, dependencies, subitems from other boards)" linked_items: [ItemResult!] } "A data source to describe" input SqlDescribeSourceInput { "Source type: board, materialized_view, data_view" type: String! "Source identifier" id: String! } type CustomActivity { id: ID type: String name: String icon_id: CustomActivityIcon color: CustomActivityColor } enum CustomActivityColor { VIVID_CERULEAN GO_GREEN PHILIPPINE_GREEN YANKEES_BLUE CELTIC_BLUE MEDIUM_TURQUOISE CORNFLOWER_BLUE MAYA_BLUE SLATE_BLUE GRAY YELLOW_GREEN DINGY_DUNGEON PARADISE_PINK BRINK_PINK YELLOW_ORANGE LIGHT_DEEP_PINK LIGHT_HOT_PINK PHILIPPINE_YELLOW } enum CustomActivityIcon { ASCENDING CAMERA CONFERENCE FLAG GIFT HEADPHONES HOMEKEYS LOCATION PAPERPLANE PLANE NOTEBOOK PLIERS TRIPOD TWOFLAGS UTENCILS } input TimelineItemTimeRange { "Start time" start_timestamp: ISO8601DateTime! "End time" end_timestamp: ISO8601DateTime! } type TimelineItemsPage { "The timeline items in the current page" timeline_items: [TimelineItem!]! "Cursor for fetching the next page" cursor: String } type TimelineResponse { "Paginated set of timeline items and a cursor to get the next page" timeline_items_page( "The cursor for the next set of timeline items" cursor: String = null, "The limit for the current page of timeline items" limit: Int = 25): TimelineItemsPage! } "A value showing status distribution counts" type BatteryValue implements ColumnValue { "The battery value for this item" battery_value: [BatteryValueItem!]! "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type BoardRelationValue implements ColumnValue { "The column that this value belongs to." column: Column! "A string representing all the names of the linked items, separated by commas" display_value: String! "The column's unique identifier." id: ID! "The linked items IDs" linked_item_ids: [ID!]! "The linked items." linked_items: [Item!]! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type ButtonValue implements ColumnValue { "The button's color in hex value." color: String "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "The button's label." label: String text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type CheckboxValue implements ColumnValue { "The column's boolean value." checked: Boolean "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date value: JSON } type ColorPickerValue implements ColumnValue { "The color in hex value." color: String "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type CountryValue implements ColumnValue { "The column that this value belongs to." column: Column! "The country value." country: Country "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type CreationLogValue implements ColumnValue { "The column that this value belongs to." column: Column! "The date when the item was created." created_at: Date! "User who created the item" creator: User! "ID of the user who created the item" creator_id: ID! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type DateValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's date value." date: String "The string representation of selected icon." icon: String "The column's unique identifier." id: ID! "The formatted date and time in user time zone." text: String "The column's time value." time: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type DependencyValue implements ColumnValue { "The column that this value belongs to." column: Column! "A string representing all the names of the linked items, separated by commas" display_value: String! "The column's unique identifier." id: ID! "The linked items ids" linked_item_ids: [ID!]! "The linked items." linked_items: [Item!]! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type DirectDocValue implements ColumnValue { "The column that this value belongs to." column: Column! "The document file attached to the column." file: DirectDocValue "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type DocValue implements ColumnValue { "The column that this value belongs to." column: Column! "The document file attached to the column." file: FileDocValue "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type DropdownValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON "The selected dropdown values." values: [DropdownValueOption!]! } type EmailValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's email value." email: String "The column's unique identifier." id: ID! "The column's text value. It can be the same as email when user didn't enter any text." label: String "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type FileValue implements ColumnValue { "The column that this value belongs to." column: Column! "The files attached to the column." files: [FileValueItem!]! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type FormulaValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON "A string representing all the formula values, separated by commas" display_value: String! } type GroupValue implements ColumnValue { "The column that this value belongs to." column: Column! "The group value." group: Group "The group identifier." group_id: ID "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type HourValue implements ColumnValue { "The column that this value belongs to." column: Column! "Hour" hour: Int "The column's unique identifier." id: ID! "Minute" minute: Int text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type IntegrationValue implements ColumnValue { "The column that this value belongs to." column: Column! "ID of the entity" entity_id: ID "The column's unique identifier." id: ID! "URL of the issue" issue_api_url: ID "ID of the issue" issue_id: String "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type ItemIdValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "ID of the item" item_id: ID! text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type LastUpdatedValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "Timestamp of the last time the item was updated" updated_at: Date "User who updated the item" updater: User "ID of the user who updated the item" updater_id: ID "The column's raw value in JSON format." value: JSON } type LinkValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "Url" url: String "Url text" url_text: String "The column's raw value in JSON format." value: JSON } type LocationValue implements ColumnValue { "Address" address: String "City" city: String "City" city_short: String "The column that this value belongs to." column: Column! "Country" country: String "Country short name (e.g. PE for Peru)" country_short: String "The column's unique identifier." id: ID! "Latitude" lat: Float "Longitude" lng: Float "Place ID of the location" place_id: String "Street" street: String "Number of building in the street" street_number: String "Short number of building in the street" street_number_short: String "Street" street_short: String text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type LongTextValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type MirrorValue implements ColumnValue { "The column that this value belongs to." column: Column! "A string representing all the names of the linked items, separated by commas" display_value: String! "The column's unique identifier." id: ID! "The mirrored items." mirrored_items: [MirroredItem!]! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type NumbersValue implements ColumnValue { "The column that this value belongs to." column: Column! "Indicates where the symbol should be placed - on the right or left of the number" direction: NumberValueUnitDirection "The column's unique identifier." id: ID! "Number" number: Float "The symbol of the unit" symbol: String text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type PeopleValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "The people and teams assigned to the item." persons_and_teams: [PeopleEntity!] text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type PersonValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "The person assigned to the item." person_id: ID text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type PhoneValue implements ColumnValue { "The column that this value belongs to." column: Column! "ISO-2 country code" country_short_name: String "The column's unique identifier." id: ID! "Phone number" phone: String text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type ProgressValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type RatingValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Rating value" rating: Int text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type StatusValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "The index of the status in the board" index: Int "Whether the status is done" is_done: Boolean "The label of the status" label: String "The style of the status label" label_style: StatusLabelStyle text: String "The column's type." type: ColumnType! "The ID of an update attached to the status" update_id: ID "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type SubtasksValue implements ColumnValue { "The column that this value belongs to." column: Column! "A string representing all the names of the subtasks, separated by commas" display_value: String! "The column's unique identifier." id: ID! "The subitems" subitems: [Item!]! "The subitems IDs" subitems_ids: [ID!]! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type TagsValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Tag ID's" tag_ids: [Int!]! "A list of tags" tags: [Tag!]! text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type TeamValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "ID of the assigned team" team_id: Int text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } type TextValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "The column's textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type TimeTrackingValue implements ColumnValue { "The column that this value belongs to." column: Column! "Total duration of the time tracker" duration: Int history: [TimeTrackingHistoryItem!]! "The column's unique identifier." id: ID! "Whether the time tracker is running" running: Boolean "The date when the time tracker was started" started_at: Date text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date value: JSON } type TimelineValue implements ColumnValue { "The column that this value belongs to." column: Column! "The start date of the timeline" from: Date "The column's unique identifier." id: ID! "The range of dates representing the timeline (YYYY-MM-DD)" text: String "The end date of the timeline" to: Date "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON "The visualization type for the timeline" visualization_type: String } type UnsupportedValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! "Text representation of the column value. Note: Not all columns support textual value" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type VoteValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! text: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON "The total number of votes" vote_count: Int! "A list of IDs of users who voted" voter_ids: [ID!]! "A list of users who voted" voters: [User!]! } type WeekValue implements ColumnValue { "The column that this value belongs to." column: Column! "The end date of the week" end_date: Date "The column's unique identifier." id: ID! "The start date of the week" start_date: Date "The range of dates representing the week (YYYY-MM-DD)" text: String "The column's type." type: ColumnType! "The column's raw value in JSON format." value: JSON } type WorldClockValue implements ColumnValue { "The column that this value belongs to." column: Column! "The column's unique identifier." id: ID! text: String "Timezone" timezone: String "The column's type." type: ColumnType! "The date when column value was last updated." updated_at: Date "The column's raw value in JSON format." value: JSON } "Content for a divider block" type DividerContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection } "Content for an image block" type ImageContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection "The public URL of the image" public_url: String! "The width of the image" width: Int } "Content for a layout block" type LayoutContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection "The column style configuration" column_style: [ColumnStyle!] "1-D array of cells (columns). Each cell carries a blockId reference." cells: [Cell!] } "Content for a list block (bulleted, numbered, todo)" type ListBlockContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection "The text content in delta format - array of operations with insert content and optional attributes" delta_format: [Operation!]! "The indentation level of the list item" indentation: Int } "Content for a notice box block" type NoticeBoxContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection "The theme of the notice box" theme: NoticeBoxTheme! } "Content for a page break block" type PageBreakContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection } "Content for a table block" type TableContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection "The width of the table" width: Int "The column style configuration" column_style: [ColumnStyle!] "2-D array of cells (rows × columns). Each cell contains a blockId reference that represents the parent block for all content blocks within that cell." cells: [TableRow!] } "Content for a text block" type TextBlockContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection "The text content in delta format - array of operations with insert content and optional attributes" delta_format: [Operation!]! } "Content for a video block" type VideoContent implements DocBaseBlockContent { "The alignment of the block content" alignment: BlockAlignment "The text direction of the block content" direction: BlockDirection "The raw URL of the video" url: String! "The width of the video" width: Int } "Base field type implementation" type BaseFieldType implements FieldType { "Unique identifier for the field type" id: Int "Unique key of the field type" uniqueKey: String "Name of the field type" name: String "Description of the field type" description: String "Current state of the field type" state: FieldTypeState "Unique key identifier for the field type" key: String "Default key for fields of this type" defaultFieldKey: String "Dependency configuration specifying mandatory and optional field dependencies required to enable this field and compute its dynamic values. When fetching the permitted values for custom input fields via the remote_options query, you must provide these dependencies in the query input." dependencyConfig: DependencyConfig "List of field type implementations" implement: [FieldTypeImplementation!] "Indicates whether this field type fetches its options from a remote source" has_remote_options: Boolean } "Configuration for a custom input field" type CustomInputFieldConfig implements InputFieldConfig { "Unique identifier for the field" id: Int "Key identifier for the field" fieldKey: String "Display title for the field" fieldTitle: String "Whether the field can be null" isNullable: Boolean "Whether the field is an array type" isArray: Boolean "Whether the field is optional" isOptional: Boolean "Additional information about the field" information: FieldInformation "Detailed description of the field" description: FieldInformation "Type of the field relation" type: FieldTypeRelationType "Reference ID to the field type" fieldTypeReferenceId: Int "Unique key of the field type" fieldTypeUniqueKey: String "Constraints applied to the field" constraints: InputFieldConstraints "Data for the referenced field type. Fetch this field when you need the `fieldTypeReferenceId` to call the `remote_options` query and retrieve the available options for the input field." fieldTypeData: FieldType } "Configuration for a custom output field" type CustomOutputFieldConfig implements OutputFieldConfig { "Unique identifier for the field" id: Int "Key identifier for the field" fieldKey: String "Display title for the field" fieldTitle: String "Whether the field can be null" isNullable: Boolean "Whether the field is an array type" isArray: Boolean "Whether the field is optional" isOptional: Boolean "Additional information about the field" information: FieldInformation "Detailed description of the field" description: FieldInformation "Type of the field relation" type: FieldTypeRelationType "Reference ID to the field type" fieldTypeReferenceId: Int "Unique key of the field type" fieldTypeUniqueKey: String "Constraints applied to the field" constraints: OutputFieldConstraints "Data for the referenced field type" fieldTypeData: FieldType } "Configuration for an interface input field" type InterfaceInputFieldConfig implements InputFieldConfig { "Unique identifier for the field" id: Int "Key identifier for the field" fieldKey: String "Display title for the field" fieldTitle: String "Whether the field can be null" isNullable: Boolean "Whether the field is an array type" isArray: Boolean "Whether the field is optional" isOptional: Boolean "Additional information about the field" information: FieldInformation "Detailed description of the field" description: FieldInformation "Type of the field relation" type: FieldTypeRelationType "Name of the subfield in the interface" subfieldName: String "Reference id of the field-type interface this input requires. Null when the source block does not declare one." interface_id: ID "Constraints applied to the field" constraints: InputFieldConstraints } "Primitive field type implementation" type PrimitiveFieldType implements FieldType { "Unique identifier for the field type" id: Int "Unique key of the field type" uniqueKey: String "Name of the field type" name: String "Description of the field type" description: String "Current state of the field type" state: FieldTypeState "Unique key identifier for the field type" key: String "Default key for fields of this type" defaultFieldKey: String "Dependency configuration specifying mandatory and optional field dependencies required to enable this field and compute its dynamic values. When fetching the permitted values for custom input fields via the remote_options query, you must provide these dependencies in the query input." dependencyConfig: DependencyConfig "List of field type implementations" implement: [FieldTypeImplementation!] "Indicates whether this field type fetches its options from a remote source" has_remote_options: Boolean "The primitive type of the field" primitiveType: PrimitiveTypes "Configuration metadata for the field type" configurartionMetadata: JSON } "Configuration for a primitive input field" type PrimitiveInputFieldConfig implements InputFieldConfig { "Unique identifier for the field" id: Int "Key identifier for the field" fieldKey: String "Display title for the field" fieldTitle: String "Whether the field can be null" isNullable: Boolean "Whether the field is an array type" isArray: Boolean "Whether the field is optional" isOptional: Boolean "Additional information about the field" information: FieldInformation "Detailed description of the field" description: FieldInformation "Type of the field relation" type: FieldTypeRelationType "Type of the primitive field" primitiveType: PrimitiveTypes } "Configuration for a primitive output field" type PrimitiveOutputFieldConfig implements OutputFieldConfig { "Unique identifier for the field" id: Int "Key identifier for the field" fieldKey: String "Display title for the field" fieldTitle: String "Whether the field can be null" isNullable: Boolean "Whether the field is an array type" isArray: Boolean "Whether the field is optional" isOptional: Boolean "Additional information about the field" information: FieldInformation "Detailed description of the field" description: FieldInformation "Type of the field relation" type: FieldTypeRelationType "Type of the primitive field" primitiveType: PrimitiveTypes } "Object field type implementation" type SubfieldsFieldType implements FieldType { "Unique identifier for the field type" id: Int "Unique key of the field type" uniqueKey: String "Name of the field type" name: String "Description of the field type" description: String "Current state of the field type" state: FieldTypeState "Unique key identifier for the field type" key: String "Default key for fields of this type" defaultFieldKey: String "Dependency configuration specifying mandatory and optional field dependencies required to enable this field and compute its dynamic values. When fetching the permitted values for custom input fields via the remote_options query, you must provide these dependencies in the query input." dependencyConfig: DependencyConfig "List of field type implementations" implement: [FieldTypeImplementation!] "Indicates whether this field type fetches its options from a remote source" has_remote_options: Boolean "Indicates if the object field type has remote subfields" hasRemoteSubfields: Boolean } "The rollup value of a status column on a multi-level board: a distribution of status counts." type ItemsPageBatteryValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Per-status counts aggregated across the item and its subitems." battery_value: [ItemsPageBatteryValueItem!]! } "The value of a board relation column." type ItemsPageBoardRelationValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Comma-separated display text of linked item names" display_value: String "Linked items with id and name" linked_items: [ItemsPageLinkedItem!]! "IDs of linked items" linked_item_ids: [ID!]! } "The value of a button column." type ItemsPageButtonValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "The value of a checkbox column." type ItemsPageCheckboxValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Whether the checkbox is checked" checked: Boolean } "The value of a color picker column." type ItemsPageColorPickerValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "The value of a country column." type ItemsPageCountryValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "ISO 2-letter country code" country_short_name: String "Full country name" country_name: String } "The value of a creation log column." type ItemsPageCreationLogValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "ISO timestamp of item creation" created_at: String "ID of the user who created the item" creator_id: ID } "The value of a date column." type ItemsPageDateValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Date portion (YYYY-MM-DD)" date: String "Time portion (HH:MM:SS)" time: String } "The value of a dependency column." type ItemsPageDependencyValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Comma-separated display text of dependency item names" display_value: String "Dependency items with id and name" linked_items: [ItemsPageLinkedItem!]! "IDs of dependency items" linked_item_ids: [ID!]! } "The value of a document column." type ItemsPageDocValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "The value of a dropdown column." type ItemsPageDropdownValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Selected dropdown options with resolved labels" values: [ItemsPageDropdownValueOption!]! } "The value of an email column." type ItemsPageEmailValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Email address" email: String } "The value of a file column." type ItemsPageFileValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "The value of a formula column." type ItemsPageFormulaValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "The computed formula result as a display string" display_value: String } "The value of an hour column." type ItemsPageHourValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Hour (0-23)" hour: Int "Minute (0-59)" minute: Int } "The value of an item ID column." type ItemsPageItemIdValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "The item ID" item_id: ID } "The value of a last updated column." type ItemsPageLastUpdatedValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "ISO timestamp of last update" updated_at: String "ID of the user who last updated the item" updater_id: ID } "The value of a link column." type ItemsPageLinkValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "URL" url: String "Display text for the link" link_text: String } "The value of a location column." type ItemsPageLocationValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Latitude" lat: String "Longitude" lng: String "Human-readable address" address: String } "The value of a long text column." type ItemsPageLongTextValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "The value of a mirror (connected boards) column." type ItemsPageMirrorValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Comma-separated display text of mirrored values" display_value: String "Mirrored column values from linked items" mirrored_items: [ItemsPageMirroredItem!]! } "The value of a numbers column." type ItemsPageNumbersValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Numeric value" number: Float } "The value of a people column." type ItemsPagePeopleValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "People and teams assigned" persons_and_teams: [ItemsPagePeopleEntity!]! } "The value of a phone column." type ItemsPagePhoneValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Phone number" phone: String "ISO country short name" country_short_name: String } "The value of a rating column." type ItemsPageRatingValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Rating value" rating: Int } "The value of a status column." type ItemsPageStatusValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Resolved status label text" label: String "Status label index" index: Int } "The value of a subtasks (subitems) column." type ItemsPageSubtasksValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Comma-separated display text of subitem names" display_value: String "Subitems with id and name" subitems: [ItemsPageLinkedItem!]! } "The value of a tags column." type ItemsPageTagsValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "List of tag IDs" tag_ids: [ID!]! } "The value of a text column." type ItemsPageTextValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "The value of a time tracking column." type ItemsPageTimeTrackingValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Total tracked duration in seconds" duration: Float } "The value of a timeline column." type ItemsPageTimelineValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Start date (YYYY-MM-DD)" from_date: String "End date (YYYY-MM-DD)" to_date: String } "A column value of an unsupported or unrecognized column type." type ItemsPageUnknownValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities } "The value of a vote column." type ItemsPageVoteValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Number of votes" vote_count: Int } "The value of a week column." type ItemsPageWeekValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities "Week start date (YYYY-MM-DD)" start_date: String "Week end date (YYYY-MM-DD)" end_date: String } "The value of a world clock column." type ItemsPageWorldClockValue implements ItemsPageColumnValue { "Column ID" id: ID "Column type" type: String "Stringified text representation" text: String "JSON string value matching old API format" value: String "Multi-level boards: whether this item is a leaf (has no subitems)." is_leaf: Boolean! "Column capabilities (calculated/rollup metadata on multi-level boards)." capabilities: ItemsPageColumnCapabilities """ Timezone string (e.g. "America/New_York") """ timezone: String } "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1." scalar Int "The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point)." scalar Float "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text." scalar String "The `Boolean` scalar type represents `true` or `false`." scalar Boolean """ The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID. """ scalar ID "Directs the executor to include this field or fragment only when the argument is true." directive @include( "Included when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT "Directs the executor to skip this field or fragment when the argument is true." directive @skip( "Skipped when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT "Marks an element of a GraphQL schema as no longer supported." directive @deprecated( """ Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/). """ reason: String = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Exposes a URL that specifies the behavior of this scalar" directive @specifiedBy( "The URL that specifies the behavior of this scalar." url: String! ) on SCALAR """ The @oneOf built-in directive marks an input object as a OneOf Input Object. Exactly one field must be provided and its value must be non-null at runtime. All fields defined within a @oneOf input must be nullable in the schema. """ directive @oneOf on INPUT_OBJECT "Directs the executor to defer this fragment when the if argument is true or undefined." directive @defer( "A unique identifier for the results." label: String "Controls whether the fragment will be deferred, usually via a variable." if: Boolean! = true ) on FRAGMENT_SPREAD | INLINE_FRAGMENT