Board View
Access board views via the client.board_view resource.
What are Board Views?
Board views are different ways to visualize and interact with your board data, such as main table, kanban, calendar, chart, timeline, and more.
Methods
query
Retrieves views for boards.
client.board_view.query(args: {}, select: DEFAULT_SELECT)Parameters:
| Name | Type | Default | Description |
|---|---|---|---|
args | Hash | {} | Query arguments (see boards query) |
select | Array | ["id", "name", "type"] | Fields to retrieve |
Returns: Monday::Response
Common args:
ids- Array of board IDslimit- Integer - Maximum number of boards to returnpage- Integer - Page number for pagination
Available Fields:
id- View IDname- View nametype- View type (e.g., "BoardView", "KanbanView", "CalendarView", "TimelineView")settings_str- JSON string with view settingsview_specific_data_str- JSON string with view-specific data
View Types:
BoardView- Main table viewKanbanView- Kanban board viewCalendarView- Calendar viewTimelineView- Timeline/Gantt viewChartView- Chart viewMapView- Map viewFormView- Form viewWorkloadView- Workload viewFilesView- Files gallery view
Response Structure:
Views are nested under boards:
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []Example:
require "monday_ruby"
Monday.configure do |config|
config.token = ENV["MONDAY_TOKEN"]
end
client = Monday::Client.new
response = client.board_view.query(
args: { ids: [1234567890] }
)
if response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
puts "Found #{views.length} views"
views.each do |view|
puts " • #{view['name']}: #{view['type']} (ID: #{view['id']})"
end
endOutput:
Found 4 views
• Main Table: BoardView (ID: 12345)
• Kanban: KanbanView (ID: 12346)
• Calendar: CalendarView (ID: 12347)
• Timeline: TimelineView (ID: 12348)GraphQL: query { boards { views { ... } } }
Query Multiple Boards
Get views from multiple boards:
response = client.board_view.query(
args: { ids: [1234567890, 2345678901] },
select: ["id", "name", "type"]
)
if response.success?
boards = response.body.dig("data", "boards")
boards.each do |board|
views = board["views"] || []
puts "Board #{board['id']}: #{views.length} views"
views.each do |view|
puts " • #{view['name']} (#{view['type']})"
end
end
endGet View Settings
Retrieve and parse view settings:
require "json"
response = client.board_view.query(
args: { ids: [1234567890] },
select: ["id", "name", "type", "settings_str"]
)
if response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
views.each do |view|
puts "\n#{view['name']} (#{view['type']})"
if view["settings_str"]
settings = JSON.parse(view["settings_str"])
puts " Settings: #{settings.keys.join(', ')}"
end
end
endFilter Views by Type
Find all views of a specific type:
def find_views_by_type(client, board_id, view_type)
response = client.board_view.query(
args: { ids: [board_id] },
select: ["id", "name", "type"]
)
return [] unless response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
views.select { |view| view["type"] == view_type }
end
# Usage
kanban_views = find_views_by_type(client, 1234567890, "KanbanView")
puts "Kanban Views: #{kanban_views.length}"
kanban_views.each do |view|
puts " • #{view['name']} (ID: #{view['id']})"
endList All View Types
Get an overview of all view types on a board:
response = client.board_view.query(
args: { ids: [1234567890] },
select: ["id", "name", "type"]
)
if response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
by_type = views.group_by { |view| view["type"] }
puts "View Types:"
by_type.each do |type, views_of_type|
puts " #{type}: #{views_of_type.length} view(s)"
end
endOutput:
View Types:
BoardView: 1 view(s)
KanbanView: 2 view(s)
CalendarView: 1 view(s)
TimelineView: 1 view(s)Response Structure
All methods return a Monday::Response object. Access data using:
response.success? # => true/false
response.status # => 200
response.body # => Hash with GraphQL responseTypical Response Pattern
response = client.board_view.query(
args: { ids: [1234567890] }
)
if response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
# Work with views
else
# Handle error
endConstants
DEFAULT_SELECT
Default fields returned by the board view query:
["id", "name", "type"]Error Handling
Common errors when working with board views:
Monday::AuthorizationError- Invalid or missing API tokenMonday::InvalidRequestError- Invalid board IDMonday::Error- Invalid field or other API errors
Example:
begin
response = client.board_view.query(
args: { ids: [123] } # Invalid ID
)
rescue Monday::InvalidRequestError => e
puts "Error: #{e.message}"
endSee the Error Handling guide for more details.
Use Cases
Check Available Views
See what views are available on a board:
response = client.board_view.query(
args: { ids: [1234567890] },
select: ["id", "name", "type"]
)
if response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
puts "Available Views:"
views.each do |view|
puts " • #{view['name']}"
end
endFind Default View
Get the main table view:
response = client.board_view.query(
args: { ids: [1234567890] },
select: ["id", "name", "type"]
)
if response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
main_view = views.find { |v| v["type"] == "BoardView" }
if main_view
puts "Main View: #{main_view['name']} (ID: #{main_view['id']})"
end
endExport View Information
Export view details for documentation:
require "csv"
def export_views_to_csv(client, board_id, filename)
response = client.board_view.query(
args: { ids: [board_id] },
select: ["id", "name", "type"]
)
return unless response.success?
boards = response.body.dig("data", "boards")
views = boards.first&.dig("views") || []
CSV.open(filename, "w") do |csv|
csv << ["ID", "Name", "Type"]
views.each do |view|
csv << [view["id"], view["name"], view["type"]]
end
end
puts "✓ Exported #{views.length} views to #{filename}"
end
# Usage
export_views_to_csv(client, 1234567890, "board_views.csv")