Implementation:Mage ai Mage ai Monday Streams
| Knowledge Sources | |
|---|---|
| Domains | Data_Integration, Monday, Stream, GraphQL |
| Last Updated | 2026-02-09 00:00 GMT |
Overview
Stream class definitions for the Mage Monday.com source connector, implementing GraphQL-based data extraction for workspaces, boards, board views, groups, and columns.
Description
This module defines stream classes that use Monday.com's GraphQL API. The BaseStream provides common data loading logic via POST requests containing GraphQL queries. Each concrete stream defines its own GraphQL query property and parse_response method to extract records from the nested GraphQL response structure. Pagination is handled via get_next_page_token, with the BoardsStream implementing page-number-based pagination. Parent-child relationships are supported: BoardViewsStream, GroupsStream, and ColumnsStream all depend on BoardsStream as their parent stream, using board_id from context. Post-processing hooks convert string IDs to integers and inject parent context.
Usage
Stream classes are instantiated with a client, config, stream catalog entry, and logger. The load_data method yields batches of records.
Code Reference
Source Location
- Repository: mage-ai
- File:
mage_integrations/mage_integrations/sources/monday/streams.py - Lines: 1-261
Signature
class BaseStream:
def __init__(self, client, config, stream, logger):
Import
from mage_integrations.sources.monday.streams import (
STREAMS, WorkspacesStream, BoardsStream, BoardViewsStream,
GroupsStream, ColumnsStream,
)
Stream Classes
| Stream Class | name | Primary Keys | Parent | GraphQL Root |
|---|---|---|---|---|
WorkspacesStream |
workspaces | id | None | boards.workspace
|
BoardsStream |
boards | id | None | boards
|
BoardViewsStream |
board_views | id | BoardsStream | boards[0].views
|
GroupsStream |
groups | id | BoardsStream | boards[0].groups
|
ColumnsStream |
columns | id | BoardsStream | boards[*].columns
|
Key Methods
| Method | Class | Description |
|---|---|---|
load_data(bookmarks) |
BaseStream | Generator that posts GraphQL queries, parses responses, handles pagination, and yields record batches. |
get_next_page_token(response, previous_token) |
BaseStream | Returns None by default; overridden by BoardsStream for page-number pagination. |
get_url_params(context, next_page_token) |
Various | Returns GraphQL variables dict. Child streams pass board_id from context.
|
parse_response(response) |
Various | Extracts records from the nested GraphQL response structure. |
post_process(row, context) |
Various | Transforms records (e.g., converting string IDs to int, injecting board_id). |
query (property) |
Various | Returns the GraphQL query string specific to each stream. |
Usage Examples
from mage_integrations.sources.monday.streams import STREAMS
stream_cls = STREAMS['boards']
stream = stream_cls(client=monday_client, config=config, stream=catalog_entry, logger=logger)
for batch in stream.load_data():
for record in batch:
process(record)