Learn how to filter, read, create, update, and clear the dropdown column on monday boards using the platform API
The dropdown column lets a user select one or more options from a list. The API allows you to read, filter, create, update, and clear the dropdown column.
Read a dropdown column
You can query the dropdown column using the column_values object that enables you to return column-specific subfields by sending a fragment in your query. Values for the dropdown column are of the DropdownValue type.
query {
items (ids:[1234567890, 9876543210]) {
column_values {
... on DropdownValue {
values {
label
id
}
column {
id
}
}
}
}
}const query = `query($itemIds: [ID!], $columnType:[ColumnType!]) { items (ids:$itemIds) { id column_values (types:$columnType) { column { title id } ... on DropdownValue { values { label id } } } } }`;
const variables = {
itemIds: [9571351485, 9572374902],
columnType: "dropdown"
};
const response = await mondayApiClient.request(query, variables);Fields
| Field | Description |
|---|---|
column Column! | The column the value belongs to. |
id ID! | The column's unique identifier. |
text String | The column's value as text. This field will return null if the column has an empty value. |
type ColumnType! | The column's type. |
value JSON | The column's JSON-formatted raw value. |
values [DropdownValueOption!]! | The selected dropdown values. |
Filter a dropdown column
Using the items_page object, you can easily filter a board's items by specific columns or column values. The table below contains the dropdown column's supported operators and compare values.
Operators | Compare values |
|---|---|
|
|
|
|
|
|
|
|
| The partial or whole label text value to filter by |
| The partial or whole label text value to filter by |
Examples
The following example returns all items on the specified board with the label "Marketing" or a label that contains "Marketing."
query {
boards(ids: 1234567890) {
items_page(
query_params: {
rules: [
{
column_id: "dropdown"
compare_value: ["Marketing"]
operator: contains_text
}
]
}
) {
items {
id
name
}
}
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `query ($board_id: [ID!], $column_id: ID!, $operator: ItemsQueryRuleOperator!, $compare_value:CompareValue!) { boards (ids: $board_id) { items_page (query_params: {rules: [{column_id: $column_id, compare_value: $compare_value, operator:$operator}]}) { items { id name } } } }`;
const variables = {
board_id: 9571351437,
column_id: "dropdown_mksrbr89",
compare_value: ["Marketing"],
operator: "contains_text",
};
const response = await mondayApiClient.request(query, variables);Create dropdown column
Required scope:boards:write
The create_dropdown_column mutation creates a new dropdown column with strongly typed settings via the API. You can specify which fields to return from the new dropdown column in the mutation response.
mutation {
create_dropdown_column(
board_id: 1234567890
id: "project_category"
title: "Project Category"
defaults: {
label_limit_count: 1
limit_select: true
labels: [
{label: "HR"}
{label: "R&D"}
{label: "IT"}
]
}
description: "The project's category."
) {
description
id
title
}
}Arguments
You can use the following arguments to define the new dropdown column's characteristics.
Argument | Description | Supported Fields |
|---|---|---|
after_column_id | The unique identifier of the column after which the new dropdown column will be created. | |
board_id | The unique identifier of the board where the new dropdown column should be created. | |
defaults | The new dropdown column's settings. | labels |
description | The new dropdown column's description. | |
id | The dropdown column's user-specified unique identifier. If not provided, a new ID will be auto-generated. If provided, it must meet the following requirements:
| |
title | The new dropdown column's title. |
The following example returns all items on the specified board with the label "Marketing" or a label that contains "Marketing."
query {
boards(ids: 1234567890) {
items_page(
query_params: {
rules: [
{
column_id: "dropdown"
compare_value: ["Marketing"]
operator: contains_text
}
]
}
) {
items {
id
name
}
}
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `query ($board_id: [ID!], $column_id: ID!, $operator: ItemsQueryRuleOperator!, $compare_value:CompareValue!) { boards (ids: $board_id) { items_page (query_params: {rules: [{column_id: $column_id, compare_value: $compare_value, operator:$operator}]}) { items { id name } } } }`;
const variables = {
board_id: 9571351437,
column_id: "dropdown_mksrbr89",
compare_value: ["Marketing"],
operator: "contains_text",
};
const response = await mondayApiClient.request(query, variables);Update a dropdown column
You can update a dropdown column with a simple string value or a JSON string value.
NOTEIt is not possible to mix dropdown labels (the text values) with dropdown IDs in the string values.
Simple strings
Send the IDs of the labels you want to set to update a dropdown column with strings. If you don’t know the IDs of the labels you’re trying to set, you can send the label's text value instead. If you need to update more than one value, you can also send a list of IDs or labels separated by commas.
If you make an API call to update the dropdown column value, but the label doesn't exist, the expected behavior will be an error message. In the output of that error, you will also receive the existing labels for that specific column. However, you can use create_labels_if_missing: true in your query to create labels that didn't previously exist.
Here is a sample query to update the dropdown column using simple string values via dropdown IDs.
mutation {
change_simple_column_value(
item_id: 9876543210
board_id: 1234567890
column_id: "dropdown"
value: "1,2"
) {
id
}
}const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValue: String!, $myColumnId: String!) { change_simple_column_value (item_id:$myItemId, board_id:$myBoardId, column_id: $myColumnId, value: $myColumnValue) { id } }`;
const variables = {
myBoardId: 9571351437,
myItemId: 9571351485,
myColumnId: "dropdown_mksrbr89",
myColumnValue: "1,2",
};
const response = await mondayApiClient.request(query, variables); Here is a sample query to update the dropdown column using simple string values with dropdown labels.
mutation {
change_simple_column_value(
item_id: 9876543210
board_id: 1234567890
column_id: "dropdown"
value: "Cookie, Cupcake"
) {
id
}
}const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValue: String!, $myColumnId: String!) { change_simple_column_value (item_id:$myItemId, board_id:$myBoardId, column_id: $myColumnId, value: $myColumnValue) { id } }`;
const variables = {
myBoardId: 9571351437,
myItemId: 9571351485,
myColumnId: "dropdown_mksrbr89",
myColumnValue: "Sunnyside,Midwood",
};
const response = await mondayApiClient.request(query, variables); JSON
You can also update the dropdown column using JSON values with either the ID value or the text label.
Pro tipYou can use both String and JSON values when updating column values for
change_multiple_column_valuesmutation, or when using thecreate_itemmutation.
Here is a sample query to update the dropdown column using JSON values with dropdown IDs.
mutation {
change_multiple_column_values(
item_id: 9876543210
board_id: 1234567890
column_values: "{\"dropdown\":{\"ids\":[\"1\"]}}"
) {
id
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValues:JSON!) { change_multiple_column_values(item_id:$myItemId, board_id:$myBoardId, column_values: $myColumnValues) { id } }`;
const variables = {
myBoardId: 9571351437,
myItemId: 9571351485,
myColumnValues: JSON.stringify({
dropdown_mksrbr89: { // dropdown_mksrbr89 is the column ID
ids: ["3"]
}
}),
};
const response = await mondayApiClient.request(query, variables);Here is a sample query to update the dropdown column using JSON values with dropdown labels.
mutation {
change_multiple_column_values(
item_id: 9876543210
board_id: 1234567890
column_values: "{\"dropdown\":{\"labels\":[\"My label\"]}}"
) {
id
}
}import { ApiClient } from "@mondaydotcomorg/api";
const mondayApiClient = new ApiClient({ token: myToken });
const query = `mutation ($myBoardId:ID!, $myItemId:ID!, $myColumnValues:JSON!) { change_multiple_column_values(item_id:$myItemId, board_id:$myBoardId, column_values: $myColumnValues) { id } }`;
const variables = {
myBoardId: 9571351437,
myItemId: 9571351485,
myColumnValues: JSON.stringify({
dropdown_mksrbr89: { // dropdown_mksrbr89 is the column ID
labels: ["Sunnyside", "Midwood"]
}
}),
};Add a dropdown value
You can add a new dropdown value to a column using the following mutation:
mutation {
change_simple_column_value(
item_id: 1234567890
board_id: 9876543210
column_id: "dropdown"
value: "New dropdown value"
create_labels_if_missing: true
) {
id
}
}Arguments for adding a dropdown value
| Argument | Description |
|---|---|
item_id Int! | The item's unique identifier. |
board_id Int! | The board's unique identifier. |
column_id Int! | The column's unique identifier. |
value String! | The new value of the column. |
create_labels_if_missing Boolean | Create status/dropdown labels if they're missing. (Requires permission to change board structure) |
Clear a dropdown column
You can clear a dropdown column using the following mutations:
mutation {
change_multiple_column_values(
item_id: 123456789
board_id: 987654321
column_values: "{\"dropdown\": null}"
) {
id
}
}mutation {
change_multiple_column_values(
item_id: 123456789
board_id: 987654321
column_values: "{\"dropdown\":{\"labels\":[]}}"
) {
id
}
}