Types
The types in this package are implemented as Python dataclasses that model the structure of Monday.com’s GraphQL API responses and query parameters.
Data Types
These dataclasses represent the structure of data returned from the Monday.com API.
For example:
@dataclass
class Item:
name: str = ''
updated_at: str = ''
state: str = ''
subitems: list[Subitem] | None = None
You can access the attributes directly:
# Get item data from API
items = await monday_client.items.query(item_ids=[123456789])
for item in items:
print(f"Item: {item.name}")
print(f"Last updated: {item.updated_at}")
print(f"State: {item.state}")
if item.subitems:
print(f"Has {len(item.subitems)} subitems")
for subitem in item.subitems:
print(f" - {subitem.name}")
Account Types
- class Account(active_members_count=0, country_code='', first_day_of_the_week=None, id='', logo='', name='', plan=None, products=None, show_timeline_weekends=None, sign_up_product_kind='', slug='', tier='')[source]
Bases:
objectRepresents a Monday.com account with its settings and plan information.
This dataclass maps to the Monday.com API account object structure, containing fields like name, plan, products, and account settings.
- Parameters:
-
active_members_count:
int= 0 The number of active users in the account - includes active users across all products who are not guests or viewers
-
country_code:
str= '' The account’s two-letter country code in ISO3166 format. The result is based on the location of the first account admin
-
first_day_of_the_week:
Optional[Literal['monday','sunday']] = None The first day of the week for the account
-
plan:
Plan|None= None The account’s payment plan. Returns
Nonefor accounts with the multi-product infrastructure
-
products:
AccountProduct|None= None The account’s active products
- class AccountProduct(id='', default_workspace_id='', kind=None)[source]
Bases:
objectRepresents a Monday.com account product with its configuration.
This dataclass maps to the Monday.com API account product object structure, containing fields like kind, default workspace, and unique identifier.
- Parameters:
- class Plan(max_users=0, period='', tier='', version=0)[source]
Bases:
objectRepresents a Monday.com account plan with its limits and features.
This dataclass maps to the Monday.com API plan object structure, containing fields like max users, period, tier, and version.
Asset Types
- class Asset(created_at='', file_extension='', file_size=0, id='', name='', original_geometry='', public_url='', uploaded_by=None, url='', url_thumbnail='')[source]
Bases:
objectRepresents a Monday.com asset (file) with its metadata and URLs.
This dataclass maps to the Monday.com API asset object structure, containing fields like name, file size, URLs, and upload information.
- Parameters:
-
public_url:
str= '' The asset’s public URL (valid for 1 hour). Accessing this link will allow users without a monday.com user profile to see the file directly while the link is valid.
-
uploaded_by:
User|None= None The user who uploaded the asset. This field will not return anything if the asset is a duplicate of something generated by a system.
Board Types
- class Board(activity_logs=None, board_folder_id='', board_kind='', columns=None, communication='', created_at='', creator=None, creator_id='', description='', groups=None, id='', items=None, items_count=0, name='', owners=None, permissions='', pos='', state='', subscribers=None, tags=None, top_group=None, type='', updated_at='', workspace=None, workspace_id='')[source]
Bases:
objectRepresents a Monday.com board with all its properties and relationships.
This dataclass maps to the Monday.com API board object structure, containing fields like name, description, columns, groups, and associated users.
- Parameters:
board_folder_id (str)
board_kind (str)
communication (str)
created_at (str)
creator (User | None)
creator_id (str)
description (str)
id (str)
items_count (int)
name (str)
permissions (str)
pos (str)
state (str)
top_group (Group | None)
type (str)
updated_at (str)
workspace (Workspace | None)
workspace_id (str)
- class ActivityLog(account_id='', data='', entity=None, event='', id='', user_id='', created_at='')[source]
Bases:
objectType definitions for monday.com API activity log structures.
These types correspond to Monday.com’s activity log view fields as documented in their API reference: https://developer.monday.com/api-reference/reference/activity-logs#fields
- Parameters:
- class BoardView(id='', name='', settings_str='', type='', view_specific_data_str='')[source]
Bases:
objectType definitions for monday.com API board view structures.
These types correspond to Monday.com’s board view fields as documented in their API reference: https://developer.monday.com/api-reference/reference/board-views#fields
- class UndoData(undo_record_id='', action_type='', entity_type='', entity_id='', count=0)[source]
Bases:
objectStructure containing undo information for board operations.
Example
undo_data = { 'undo_record_id': 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'action_type': 'modify_project', 'entity_type': 'Board', 'entity_id': 987654321, 'count': 1, }
- class UpdateBoard(id='', name='', updated_attribute='', previous_attribute=None, success=False, undo_data=None)[source]
Bases:
objectResponse structure for board update operations.
Example
response = { 'success': True, 'undo_data': { 'undo_record_id': 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee', 'action_type': 'modify_project', 'entity_type': 'Board', 'entity_id': 987654321, 'count': 1, }, }
- Parameters:
Column Types
- class Column(archived=False, description='', id='', settings_str='', title='', type='', width=0)[source]
Bases:
objectRepresents a Monday.com column with its properties and settings.
This dataclass maps to the Monday.com API column object structure, containing fields like title, type, settings, and metadata.
- Parameters:
- class ColumnValue(additional_info='', id='', text='', title='', type='', value=<factory>, column=None, display_value='', label='', color='')[source]
Bases:
objectRepresents a Monday.com column value with its data and metadata.
This dataclass maps to the Monday.com API column value object structure, containing fields like text, value, type, and associated column metadata.
- Parameters:
-
display_value:
str= '' Display value for fragment queries like … on MirrorValue, … on BoardRelationValue
- class ColumnFilter(column_id, column_values)[source]
Bases:
objectStructure for filtering items by column values.
Example
column_filter = ColumnFilter( column_id='status', column_values=['Done', 'In Progress'] ) # Or with a single value column_filter = ColumnFilter(column_id='text', column_values='Search term')
-
column_values:
str|list[str] The value(s) to filter for. Can be a single string or list of strings
-
column_values:
- monday.types.column.ColumnType: Literal
Literal of supported column type names used throughout the API.
Group Types
- class Group(archived=False, color='', deleted=False, id='', items=None, position='', title='')[source]
Bases:
objectRepresents a Monday.com group with its properties and items.
This dataclass maps to the Monday.com API group object structure, containing fields like title, color, position, and associated items.
- Parameters:
Item Types
Note
Items can be filtered and queried using QueryParams and QueryRule. See Query Types for details.
- class Item(assets=None, board=None, column_values=None, created_at='', creator=None, creator_id='', group=None, id='', name='', state='', subitems=None, subscribers=None, updated_at='', updates=None, email='', url='', relative_link='', linked_items=None, parent_item=None)[source]
Bases:
objectRepresents a Monday.com item (row) with its data and relationships.
This dataclass maps to the Monday.com API item object structure, containing fields like name, column values, updates, and associated board/group information.
- Parameters:
- assets: list[Asset] | None = None
The item’s assets/files
- board: Board | None = None
The board that contains the item
- column_values: list[ColumnValue] | None = None
The item’s column values
- created_at: str = ''
The item’s creation date. Returned as
YYYY-MM-DDTHH:MM:SS
- creator: User | None = None
The item’s creator
- creator_id: str = ''
The unique identifier of the item’s creator. Returns
Noneif the item was created by default on the board.
- email: str = ''
The item’s email (when available).
- group: Group | None = None
The item’s group
- id: str = ''
The item’s unique identifier
- linked_items: list['Item'] | None = None
The item’s linked items (when available).
- name: str = ''
The item’s name
- parent_item: Item' | None = None
The parent item, when this Item represents a subitem (e.g., parent_item { … }).
- relative_link: str = ''
The item’s relative path (when available).
- state: str = ''
The item’s state
- subitems: list[Subitem] | None = None
The item’s subitems
- subscribers: list[User] | None = None
The item’s subscribers
- updated_at: str = ''
The date the item was last updated. Returned as
YYYY-MM-DDTHH:MM:SS
- updates: list[Update] | None = None
The item’s updates
- url: str = ''
The item’s link URL (when available).
- class ItemList(board_id, items)[source]
Bases:
objectType definition for a list of items associated with a board.
This structure is used by the Boards.get_items() method to return items grouped by their board ID.
- class ItemsPage(items=None, cursor='')[source]
Bases:
objectRepresents a paginated page of Monday.com items with cursor for navigation.
This dataclass maps to the Monday.com API items page structure, containing a list of items and a cursor for retrieving the next page.
- class OrderBy(column_id, direction='asc')[source]
Bases:
objectStructure for ordering items in queries.
-
direction:
Literal['asc','desc'] = 'asc' The direction to order items. Defaults to ‘asc’ if not specified
-
direction:
- class QueryRule(column_id, compare_value, operator='any_of', compare_attribute='')[source]
Bases:
objectStructure for defining item query rules.
- Parameters:
column_id (str)
operator (Literal['any_of', 'not_any_of', 'is_empty', 'is_not_empty', 'greater_than', 'greater_than_or_equals', 'lower_than', 'lower_than_or_equal', 'between', 'not_contains_text', 'contains_text', 'contains_terms', 'starts_with', 'ends_with', 'within_the_next', 'within_the_last'])
compare_attribute (str)
-
operator:
Literal['any_of','not_any_of','is_empty','is_not_empty','greater_than','greater_than_or_equals','lower_than','lower_than_or_equal','between','not_contains_text','contains_text','contains_terms','starts_with','ends_with','within_the_next','within_the_last'] = 'any_of' The comparison operator to use. Defaults to
any_ofif not specified
- class QueryParams(rules=<factory>, operator='and', order_by=None, ids=<factory>)[source]
Bases:
objectStructure for complex item queries.
Example
query_params = QueryParams( rules=[ QueryRule( column_id='status', compare_value=['Done', 'In Progress'], operator='any_of', ) ], operator='and', order_by=OrderBy(column_id='date', direction='desc'), )
Note
For examples of how to use QueryParams to filter items, see Filtering and Querying Items in the Usage documentation.
- Parameters:
Subitem Types
- class Subitem(assets=None, board=None, created_at='', column_values=None, creator=None, creator_id='', email='', group=None, id='', item_id='', linked_items=None, parent_item=None, relative_link='', name='', state='', updated_at='', subitems=None, subscribers=None, updates=None, url='')[source]
Bases:
objectRepresents a Monday.com subitem with its properties and relationships.
This dataclass maps to the Monday.com API subitem object structure, containing fields like name, state, and associated board/group information.
- Parameters:
assets (list['Asset'] | None)
board (Board | None)
created_at (str)
column_values (list['ColumnValue'] | None)
creator ('User' | None)
creator_id (str)
email (str)
group (Group | None)
id (str)
item_id (str)
linked_items (list['Item'] | None)
parent_item ('Item' | None)
relative_link (str)
name (str)
state (str)
updated_at (str)
subitems (list['Item'] | None)
subscribers (list['User'] | None)
updates (list['Update'] | None)
url (str)
- assets: list['Asset'] | None = None
The subitem’s assets/files
- board: Board | None = None
The subitem’s board
- column_values: list['ColumnValue'] | None = None
The subitem’s column values
- created_at: str = ''
The subitem’s creation date. Returned as
YYYY-MM-DDTHH:MM:SS
- creator: User' | None = None
The subitem’s creator
- creator_id: str = ''
The subitem’s creator unique identifier
- email: str = ''
The subitem’s email
- group: Group | None = None
The subitem’s group
- id: str = ''
The subitem’s unique identifier
- item_id: str = ''
The subitem’s parent item unique identifier
- linked_items: list['Item'] | None = None
The subitem’s linked items
- name: str = ''
The subitem’s name
- parent_item: Item' | None = None
The subitem’s parent item object when requested via fields (e.g., parent_item { id name })
- relative_link: str = ''
The subitem’s relative path
- state: str = ''
The subitem’s state
- subitems: list['Item'] | None = None
The subitem’s subitems (nested items)
- subscribers: list['User'] | None = None
The subitem’s subscribers
- updated_at: str = ''
The subitem’s last update date. Returned as
YYYY-MM-DDTHH:MM:SS
- updates: list['Update'] | None = None
The subitem’s updates
- url: str = ''
The subitem’s link
- class SubitemList(item_id, subitems)[source]
Bases:
objectType definition for a list of subitems associated with a parent item.
This structure is used by the Subitems.query() method to return subitems grouped by their parent item ID.
Tag Types
Team Types
- class Team(id='', name='', owners=None, picture_url='', users=None)[source]
Bases:
objectRepresents a Monday.com team with its members and owners.
This dataclass maps to the Monday.com API team object structure, containing fields like name, picture URL, owners, and team members.
- Parameters:
Update Types
- class Update(assets=None, body='', created_at='', creator=None, creator_id='', id='', item_id='', parent_id='', replies=None, text_body='', updated_at='')[source]
Bases:
objectRepresents a Monday.com update (comment) with its content and metadata.
This dataclass maps to the Monday.com API update object structure, containing fields like body, creator, replies, and associated assets.
- Parameters:
User Types
- class User(account=None, birthday='', country_code='', created_at='', current_language='', email='', enabled=False, id='', is_admin=False, is_guest=False, is_pending=False, is_view_only=False, is_verified=False, join_date='', last_activity='', location='', mobile_phone='', name='', out_of_office=None, phone='', photo_original='', photo_small='', photo_thumb='', photo_tiny='', sign_up_product_kind='', teams=None, time_zone_identifier='', title='', url='', utc_hours_diff=0)[source]
Bases:
objectRepresents a Monday.com user with their profile and account information.
This dataclass maps to the Monday.com API user object structure, containing fields like name, email, profile photos, teams, and account settings.
- Parameters:
account (Account | None)
birthday (str)
country_code (str)
created_at (str)
current_language (str)
email (str)
enabled (bool)
id (str)
is_admin (bool)
is_guest (bool)
is_pending (bool)
is_view_only (bool)
is_verified (bool)
join_date (str)
last_activity (str)
location (str)
mobile_phone (str)
name (str)
out_of_office (OutOfOffice | None)
phone (str)
photo_original (str)
photo_small (str)
photo_thumb (str)
photo_tiny (str)
sign_up_product_kind (str)
time_zone_identifier (str)
title (str)
url (str)
utc_hours_diff (int)
-
last_activity:
str= '' The last date and time the user was active. Returned as
YYYY-MM-DDTHH:MM:SS
-
out_of_office:
OutOfOffice|None= None The user’s out-of-office status
Workspace Types
- class Workspace(boards=None, created_at='', description='', id='', kind='', name='', owners=None, picture_url='', settings_str='', state='', subscribers=None, teams=None, updated_at='')[source]
Bases:
objectRepresents a Monday.com workspace with its boards and members.
This dataclass maps to the Monday.com API workspace object structure, containing fields like name, description, boards, owners, and subscribers.
- Parameters:
Column Input Types
These dataclasses provide type-safe ways to set column values when updating items via the Monday.com API.
For example:
from monday.types.column_inputs import DateInput, StatusInput, TextInput, NumberInput
# Update multiple column values at once
await client.items.change_column_values(
item_id=123456789,
column_values=[
DateInput('date_column_id', '2024-01-15', '14:30:00'),
StatusInput('status_column_id', 'Working on it'),
TextInput('text_column_id', 'Updated content'),
NumberInput('number_column_id', 42.5)
]
)
- class CheckboxInput(column_id, checked)[source]
Bases:
objectRepresents a checkbox column input value for Monday.com API operations.
- Parameters:
Example
checkbox_val = CheckboxInput('unique_column_id', True) await client.items.change_column_values( item_id=123456789, column_values=checkbox_val )
- class CountryInput(column_id, country_code)[source]
Bases:
objectRepresents a country column input value for Monday.com API operations.
- Parameters:
Example
country_val = CountryInput('unique_column_id', 'US') await client.items.change_column_values( item_id=123456789, column_values=country_val )
- class DateInput(column_id, date, time=None)[source]
Bases:
objectRepresents a date column input value for Monday.com API operations.
Based on the Monday.com API documentation, date columns can be updated using either a simple string format (YYYY-MM-DD) or a JSON format with date and time.
- Parameters:
Example
# Simple date date_val = DateInput('unique_column_id', '2024-01-15') # Date with time (use UTC timezone) date_val = DateInput('unique_column_id', '2024-01-15', '14:30:00') # Use in change_column_values await client.items.change_column_values( item_id=123456789, column_values=date_val )
- class DropdownInput(column_id, label)[source]
Bases:
objectRepresents a dropdown column input value for Monday.com API operations.
- Parameters:
Example
dropdown_val = DropdownInput('unique_column_id', 'Option 1') await client.items.change_column_values( item_id=123456789, column_values=dropdown_val )
- class EmailInput(column_id, email, text=None)[source]
Bases:
objectRepresents an email column input value for Monday.com API operations.
- Parameters:
Example
email_val = EmailInput( 'unique_column_id', 'user@example.com', 'Contact User' ) await client.items.change_column_values( item_id=123456789, column_values=email_val )
- class HourInput(column_id, hour, minute)[source]
Bases:
objectRepresents an hour column input value for Monday.com API operations.
- Parameters:
Example
hour_val = HourInput('unique_column_id', 14, 30) # 2:30 PM await client.items.change_column_values( item_id=123456789, column_values=hour_val )
- class LinkInput(column_id, url, text=None)[source]
Bases:
objectRepresents a link column input value for Monday.com API operations.
- Parameters:
Example
link_val = LinkInput( 'unique_column_id', 'https://example.com', 'Example Website' ) await client.items.change_column_values( item_id=123456789, column_values=link_val )
- class LocationInput(column_id, address, latitude, longitude)[source]
Bases:
objectRepresents a location column input value for Monday.com API operations.
- Parameters:
Example
location_val = LocationInput( 'unique_column_id', '123 Main St', 40.7128, -74.0060 ) await client.items.change_column_values( item_id=123456789, column_values=location_val )
- class LongTextInput(column_id, text)[source]
Bases:
objectRepresents a long text column input value for Monday.com API operations.
Example
long_text_val = LongTextInput( 'unique_column_id', 'This is a longer text content...' ) await client.items.change_column_values( item_id=123456789, column_values=long_text_val )
- class NumberInput(column_id, number)[source]
Bases:
objectRepresents a number column input value for Monday.com API operations.
Example
num_val = NumberInput('unique_column_id', 42.5) await client.items.change_column_values( item_id=123456789, column_values=num_val )
- class PeopleInput(column_id, person_ids=None, team_ids=None)[source]
Bases:
objectRepresents a people column input value for Monday.com API operations.
- Parameters:
Example
people_val = PeopleInput('unique_column_id', person_ids=[123, 456]) await client.items.change_column_values( item_id=123456789, column_values=people_val )
- class PhoneInput(column_id, phone_number, country_code='US')[source]
Bases:
objectRepresents a phone column input value for Monday.com API operations.
- Parameters:
Example
phone_val = PhoneInput('unique_column_id', '+1-555-123-4567', 'US') await client.items.change_column_values( item_id=123456789, column_values=phone_val )
- class RatingInput(column_id, rating)[source]
Bases:
objectRepresents a rating column input value for Monday.com API operations.
Example
rating_val = RatingInput('unique_column_id', 4) await client.items.change_column_values( item_id=123456789, column_values=rating_val )
- class StatusInput(column_id, label)[source]
Bases:
objectRepresents a status column input value for Monday.com API operations. You can pass either the index or the label value of the status you want to update. If the label is a number, send the index instead.
- Parameters:
Example
status_val = StatusInput('unique_column_id', 'Working on it') await client.items.change_column_values( item_id=123456789, column_values=status_val )
- class TagInput(column_id, tag_id)[source]
Bases:
objectRepresents a tag column input value for Monday.com API operations.
- Parameters:
Example
tag_val = TagInput('unique_column_id', 'important') await client.items.change_column_values( item_id=123456789, column_values=tag_val )
- class TextInput(column_id, text)[source]
Bases:
objectRepresents a text column input value for Monday.com API operations.
Example
text_val = TextInput('unique_column_id', 'This is some text content') await client.items.change_column_values( item_id=123456789, column_values=text_val )
- class TimelineInput(column_id, from_date, to_date)[source]
Bases:
objectRepresents a timeline column input value for Monday.com API operations.
- Parameters:
Example
timeline_val = TimelineInput('unique_column_id', '2024-01-01', '2024-01-31') await client.items.change_column_values( item_id=123456789, column_values=timeline_val )
- class WeekInput(column_id, start_date, end_date)[source]
Bases:
objectRepresents a week column input value for Monday.com API operations.
- Parameters:
Example
week_val = WeekInput('unique_column_id', '2024-01-01', '2024-01-07') await client.items.change_column_values( item_id=123456789, column_values=week_val )
- class WorldClockInput(column_id, timezone)[source]
Bases:
objectRepresents a world clock column input value for Monday.com API operations.
- Parameters:
Example
world_clock_val = WorldClockInput('unique_column_id', 'America/New_York') await client.items.change_column_values( item_id=123456789, column_values=world_clock_val )
Column Default Types
These dataclasses are used to define default values when creating columns.
- class StatusDefaults(labels)[source]
Bases:
objectDefault configuration for status columns.
- Parameters:
labels (list[StatusLabel])
-
labels:
list[StatusLabel] List of status labels to create
- class StatusLabel(text, index)[source]
Bases:
objectRepresents a status label with its properties.
-
index:
int 0-19, 101-110, 151-160). See Monday.com status colors for index to color mappings.
- Type:
The label index which corresponds to its color (ranges
-
index:
- class DropdownDefaults(options)[source]
Bases:
objectDefault configuration for dropdown columns.
- Parameters:
options (list[DropdownLabel])
-
options:
list[DropdownLabel] List of dropdown options to create
Query Types
These dataclasses are used to build complex queries and filter data from the Monday.com API. They are primarily used with the boards.get_items() method to filter items based on column values, dates, text content, and other criteria.
For basic usage examples, see Filtering and Querying Items in the Usage documentation.
For example:
from monday.types.item import QueryParams, QueryRule, OrderBy
# Create a query to find items with status "Done" or "In Progress"
query_params = QueryParams(
rules=[
QueryRule(
column_id='status',
compare_value=['Done', 'In Progress'],
operator='any_of'
)
],
operator='and',
order_by=OrderBy(
column_id='date',
direction='desc'
)
)
# Use the query parameters
items = await monday_client.items.query(query_params=query_params)