Reguły walidacji
Dostępne tylko w wersji API 2026-07 i nowszych
Reguły walidacji pozwalają zadbać o jakość danych na tablicach monday.com przez określenie ograniczeń dotyczących wartości w kolumnach. W przeciwieństwie do kolumn wymaganych, które oznaczają kolumnę jako obowiązkową, reguły walidacji obsługują operatory porównania, zakresy wartości i logikę warunkową. Aby dowiedzieć się więcej o tej funkcji w interfejsie monday.com, zobacz Walidacje danych.
W tym przewodniku poznasz API reguł walidacji - od podstawowych ograniczeń po reguły warunkowe. Po jego przeczytaniu będziesz umieć programowo egzekwować reguły biznesowe, takie jak „kwoty muszą wynosić co najmniej 5” lub „jeśli status to Done, opis musi być uzupełniony”.
Kluczowe pojęcia
Jak działają reguły walidacji
Reguła walidacji składa się z dwóch części:
| Część | Wymagana | Opis |
|---|---|---|
then |
Tak | Ograniczenie, które musi być spełnione. Określa, jak powinna wyglądać wartość w kolumnie. |
if |
Nie | Warunek, który uruchamia regułę. Jeśli go podasz, ograniczenie then będzie obowiązywać tylko po spełnieniu warunku if. |
Reguły bez klauzuli if to reguły walidacji - obowiązują zawsze. Reguły z klauzulą if to reguły warunkowe - obowiązują tylko po spełnieniu warunku.
Egzekwowanie reguł
Reguły walidacji są egzekwowane zarówno w interfejsie monday.com, jak i przez API. Gdy tworzysz lub aktualizujesz elementy za pomocą mutacji takich jak create_item, change_simple_column_value lub change_column_values, API sprawdza aktywne reguły walidacji i odrzuca żądania, które je naruszają, zwracając błąd DATA_VALIDATIONS_ERROR (kod statusu 422).
Odpowiedź błędu zawiera informacje o kolumnach, które nie przeszły walidacji:
{
"errors": [
{
"message": "data_validation_error",
"extensions": {
"code": "DATA_VALIDATIONS_ERROR",
"status_code": 422,
"error_data": [
{
"itemId": null,
"columnIds": ["numeric_mm1pddwd"],
"message": "'Amount' must be at least [5]"
}
]
}
}
]
}
Związek z kolumnami wymaganymi
Reguły walidacji i kolumny wymagane to osobne funkcje, które mogą działać jednocześnie na tej samej tablicy:
- Kolumny wymagane (
add_required_column/remove_required_column) oznaczają kolumnę jako obowiązkową. Kolumna musi mieć wartość, ale nie określa się, jaka ma to być wartość. - Reguły walidacji (
create_validation_rule/update_validation_rule/delete_validation_rule) określają, jakie wartości są akceptowane.
Obie funkcje pojawiają się w odpowiedzi na zapytanie validations - kolumny wymagane w required_column_ids, a reguły w rules.
Wymagania wstępne
- Token uwierzytelniający API
- Identyfikator tablicy (znajdziesz go w adresie URL:
monday.com/boards/{board_id}) - Znajomość identyfikatorów kolumn na tablicy (wykonaj zapytanie
boards→columns→id) - Żądania muszą zawierać nagłówek
API-Version: 2026-07 - Konto monday.com w planie Pro lub Enterprise
Tworzenie pierwszej reguły
Reguła walidacji
Utwórzmy regułę, która wymaga, aby w kolumnie statusu znajdowała się jedna z dwóch określonych wartości (indeksy etykiet 1 i 2):
mutation {
create_validation_rule(
id: 1234567890,
type: board,
rule: {
then: {
operator: AND,
groups: [{
operator: ANY_OF,
column_id: "status",
compare_value: [1, 2]
}]
}
}
) {
id
if
then
}
}
Odpowiedź zawiera wygenerowany identyfikator reguły:
{
"data": {
"create_validation_rule": {
"id": "cd7f1b7b-452e-40d3-886c-346184ffee7e",
"if": null,
"then": {
"operator": "AND",
"groups": [
{
"operator": "ANY_OF",
"column_id": "status",
"compare_value": [1, 2]
}
]
}
}
}
}
Ważne informacje:
- Klauzula then wymaga pola operator (AND lub OR) oraz tablicy groups zawierającej ograniczenia.
- Każde ograniczenie dotyczy kolumny wskazanej przez column_id i zawiera operator porównania operator oraz opcjonalne pole compare_value.
- Reguły walidacji bez klauzuli if zwracają null w polu if.
- Zwrócone id to identyfikator UUID używany przy aktualizowaniu i usuwaniu reguł.
Ograniczenie liczbowe
Wymagaj, aby wartość w kolumnie liczb wynosiła co najmniej 5:
mutation {
create_validation_rule(
id: 1234567890,
type: board,
rule: {
then: {
operator: AND,
groups: [{
operator: GREATER_THAN_OR_EQUALS,
column_id: "numbers0",
compare_value: [5]
}]
}
}
) {
id
then
}
}
Ograniczenie zakresu dat
Wymagaj, aby data w kolumnie mieściła się w określonym zakresie:
mutation {
create_validation_rule(
id: 1234567890,
type: board,
rule: {
then: {
operator: AND,
groups: [{
operator: BETWEEN,
column_id: "date0",
compare_value: ["2026-01-01", "2026-12-31"]
}]
}
}
) {
id
then
}
}
Ograniczenie tekstowe
Wymagaj, aby kolumna tekstowa zawierała określony fragment tekstu:
mutation {
create_validation_rule(
id: 1234567890,
type: board,
rule: {
then: {
operator: AND,
groups: [{
operator: CONTAINS_TEXT,
column_id: "text0",
compare_value: ["REQ-"]
}]
}
}
) {
id
then
}
}
Reguły warunkowe
Reguły warunkowe używają klauzuli if, aby określić, kiedy obowiązuje ograniczenie then. Dzięki temu możesz tworzyć reguły takie jak „jeśli status to Done, opis musi być uzupełniony”.
Podstawowa reguła warunkowa
mutation {
create_validation_rule(
id: 1234567890,
type: board,
rule: {
if: {
operator: AND,
groups: [{
operator: ANY_OF,
column_id: "status",
compare_value: [1]
}]
},
then: {
operator: AND,
groups: [{
operator: IS_NOT_EMPTY,
column_id: "text0"
}]
}
}
) {
id
if
then
}
}
👍 IS_NOT_EMPTY w regułach warunkowych
Operator
IS_NOT_EMPTYjest dostępny tylko w regułach warunkowych (regułach z klauzuląif). Nie można go używać w samodzielnych regułach walidacji. Możesz użyć go zarówno w klauzuliif, jak ithen- na przykład, aby uruchomić regułę, gdy jedna kolumna nie jest pusta, albo wymagać wartości w kolumnie po spełnieniu warunku.
Wiele ograniczeń w klauzuli then
Reguły warunkowe mogą jednocześnie egzekwować kilka ograniczeń. Jeśli warunek zostanie spełniony, wymagaj uzupełnienia zarówno kolumny liczb, jak i kolumny daty:
mutation {
create_validation_rule(
id: 1234567890,
type: board,
rule: {
if: {
operator: AND,
groups: [{
operator: ANY_OF,
column_id: "priority",
compare_value: [1]
}]
},
then: {
operator: AND,
groups: [
{
operator: IS_NOT_EMPTY,
column_id: "numbers0"
},
{
operator: IS_NOT_EMPTY,
column_id: "date0"
}
]
}
}
) {
id
if
then
}
}
Aktualizowanie i usuwanie reguł
Aktualizowanie reguły
Użyj update_validation_rule z identyfikatorem reguły. Musisz podać pełną definicję reguły - częściowe aktualizacje nie są obsługiwane:
mutation {
update_validation_rule(
id: 1234567890,
type: board,
rule_id: "cd7f1b7b-452e-40d3-886c-346184ffee7e",
rule: {
then: {
operator: AND,
groups: [{
operator: GREATER_THAN_OR_EQUALS,
column_id: "numbers0",
compare_value: [10]
}]
}
}
) {
id
if
then
}
}
Usuwanie reguły
mutation {
delete_validation_rule(
id: 1234567890,
type: board,
rule_id: "cd7f1b7b-452e-40d3-886c-346184ffee7e"
) {
id
}
}
Mutacja zwraca dane usuniętej reguły.
Odczytywanie reguł walidacji
Wykonaj zapytanie do punktu końcowego validations, aby wyświetlić wszystkie reguły walidacji i kolumny wymagane na tablicy:
query {
validations(id: 1234567890) {
required_column_ids
rules
}
}
Pole rules zwraca obiekt JSON, w którym każdy klucz jest identyfikatorem reguły, a każda wartość zawiera definicję reguły:
{
"data": {
"validations": {
"required_column_ids": null,
"rules": {
"80d2c9d3-c93d-40be-9d34-b611241345b5": {
"then": {
"operator": "AND",
"groups": [{
"operator": "GREATER_THAN_OR_EQUALS",
"column_id": "numbers0",
"compare_value": [5]
}]
}
},
"31933592-171a-47ae-93a5-7a1c214fc9a3": {
"if": {
"operator": "AND",
"groups": [{
"operator": "ANY_OF",
"column_id": "status",
"compare_value": [1]
}]
},
"then": {
"operator": "AND",
"groups": [{
"operator": "IS_NOT_EMPTY",
"column_id": "text0",
"compare_value": []
}]
}
}
}
}
}
}
📘 UWAGA
W odpowiedzi na zapytanie reguły warunkowe zawierają klucze
ifithen. Reguły walidacji bez warunku mają tylko kluczthen(kluczifjest nieobecny, a nie ustawiony nanull). Różni się to od odpowiedzi mutacji, w której poleifma jawnie wartośćnull.
Obsługiwane operatory według typu kolumny
Obsługa operatorów znacznie różni się w zależności od typu klauzuli (zwykłe reguły, klauzula IF reguły warunkowej lub klauzula THEN reguły warunkowej). Nie wszystkie operatory działają ze wszystkimi typami kolumn. Sprawdź tabele poniżej, aby znaleźć operatory obsługiwane w konkretnym przypadku.
Zwykłe reguły walidacji (bez klauzuli if)
Zwykłe reguły obsługują najbardziej ograniczony zestaw operatorów. Kolumna może mieć tylko JEDNĄ zwykłą regułę z JEDNYM ograniczeniem:
| Typ kolumny | Obsługiwane operatory |
|---|---|
status |
ANY_OF, NOT_ANY_OF |
dropdown |
ANY_OF, NOT_ANY_OF |
rating |
ANY_OF, NOT_ANY_OF |
numbers |
NOT_EQUALS, GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL |
date |
NOT_EQUALS, GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL, BETWEEN |
text |
CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
long_text |
CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
email |
CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
phone |
CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
link |
CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
country |
CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
checkbox, people, timeline, location, week, hour, tags, file, world_clock, vote, color_picker, time_tracking, dependency |
(brak obsługiwanych operatorów) |
Reguły warunkowe: klauzula IF
Klauzula if uruchamia regułę. Obsługuje podzbiór operatorów:
| Typ kolumny | Obsługiwane operatory |
|---|---|
status |
ANY_OF, NOT_ANY_OF, IS_NOT_EMPTY |
dropdown |
ANY_OF, NOT_ANY_OF, IS_NOT_EMPTY |
rating |
ANY_OF, NOT_ANY_OF, IS_NOT_EMPTY |
numbers |
EQUALS, NOT_EQUALS, IS_NOT_EMPTY, GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL |
date |
EQUALS, NOT_EQUALS, IS_NOT_EMPTY, GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL, BETWEEN |
text |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
long_text |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
email |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
phone |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
link |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
country |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
checkbox |
IS_NOT_EMPTY |
people |
IS_NOT_EMPTY |
timeline |
IS_NOT_EMPTY |
location |
IS_NOT_EMPTY |
week, hour, tags, file, world_clock, vote, color_picker, time_tracking, dependency |
(brak obsługiwanych operatorów) |
Reguły warunkowe: klauzula THEN
Klauzula then egzekwuje ograniczenie po spełnieniu warunku. Obsługuje więcej operatorów:
| Typ kolumny | Obsługiwane operatory |
|---|---|
status |
ANY_OF, NOT_ANY_OF, IS_EMPTY, IS_NOT_EMPTY |
dropdown |
ANY_OF, NOT_ANY_OF, IS_EMPTY, IS_NOT_EMPTY |
rating |
ANY_OF, NOT_ANY_OF, IS_NOT_EMPTY |
numbers |
EQUALS, NOT_EQUALS, IS_NOT_EMPTY, GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL |
date |
NOT_EQUALS, IS_NOT_EMPTY, GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL, BETWEEN |
text |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
long_text |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
email |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
phone |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
link |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
country |
IS_NOT_EMPTY, CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
checkbox |
IS_EMPTY, IS_NOT_EMPTY |
people |
IS_EMPTY, IS_NOT_EMPTY |
timeline |
IS_NOT_EMPTY |
location |
IS_NOT_EMPTY |
week, hour, tags, file, world_clock, vote, color_picker, time_tracking, dependency |
(brak obsługiwanych operatorów) |
📘 BETWEEN dla kolumn liczb
Operator
BETWEENNIE jest obsługiwany w kolumnachnumbersw żadnej klauzuli. Jest dostępny tylko dla kolumndate.
Ograniczenia i limity
| Ograniczenie | Opis |
|---|---|
| Jedna zwykła reguła na kolumnę | Kolumna może mieć najwyżej jedną regułę walidacji bez klauzuli if. Próba dodania drugiej zwykłej reguły kończy się błędem „A column can have only one non-conditional rule”. |
| Jedno ograniczenie na zwykłą regułę | Reguły walidacji bez klauzuli if muszą zawierać w klauzuli then dokładnie jedno ograniczenie. Nie można dodać kilku ograniczeń. |
| Wiele ograniczeń w regule warunkowej | Reguły warunkowe (z klauzulą if) mogą zawierać w klauzuli then kilka ograniczeń połączonych operatorem AND lub OR. Klauzula if musi zawierać dokładnie jedno ograniczenie. |
| Nie można łączyć typów reguł | Kolumna nie może mieć jednocześnie zwykłej reguły walidacji i reguły warunkowej. Próba dodania obu kończy się błędem „A column cannot have both conditional and non-conditional rules”. |
| Tylko plany Pro i Enterprise | Reguły walidacji wymagają planu Pro lub Enterprise. Konta Free/Standard otrzymują błąd UserUnauthorizedException, którego przyczyna zawiera „data_validation_rules” lub „required_columns”. |
| Kolumny obsługujące wymagane wartości a kolumny obsługujące reguły | Kolumnę można oznaczyć jako wymaganą, nawet jeśli nie obsługuje żadnych reguł walidacji (np. timeline, location). Zobacz Kolumny wymagane i Obsługa operatorów. |
| Egzekwowanie w interfejsie i API | Reguły są egzekwowane zarówno w interfejsie monday.com, jak i przez API. Żądania API naruszające reguły zwracają DATA_VALIDATIONS_ERROR (kod statusu 422) wraz z informacjami o kolumnach, które nie przeszły walidacji. |
Formaty wartości porównywanych
Format tablicy compare_value zależy od typu kolumny i operatora. Dokładnie przestrzegaj poniższych zasad - API rygorystycznie sprawdza format:
Operatory oparte na etykietach (status, dropdown, rating)
Używaj indeksów etykiet (liczb całkowitych), a nie ich nazw:
# ✅ DO: Use label index
compare_value: [1, 2]
# ❌ DON'T: Use label name
compare_value: ["Done", "In Progress"]
Wartości liczbowe
Do porównania użyj jednej liczby, a dla operatora BETWEEN - dwóch liczb (nie jest obsługiwany w kolumnach liczb):
| Operator | compare_value | Uwagi |
|---|---|---|
GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL, EQUALS, NOT_EQUALS |
[5] |
Pojedyncza wartość liczbowa |
Wartości dat i osi czasu
Ważne: Format daty w porównaniach zależy od operatora:
| Operator | compare_value | Uwagi |
|---|---|---|
BETWEEN |
["2026-01-01", "2026-12-31"] |
Dwa ciągi znaków z datami w formacie YYYY-MM-DD, bez prefiksu EXACT |
GREATER_THAN, GREATER_THAN_OR_EQUALS, LOWER_THAN, LOWER_THAN_OR_EQUAL, NOT_EQUALS |
["EXACT", "2026-01-01"] |
Wymagane: dodaj prefiks "EXACT", a następnie datę w formacie YYYY-MM-DD |
EQUALS |
["EXACT", "2026-01-01"] |
Tak jak w przypadku pozostałych porównań - dodaj prefiks "EXACT" |
Kolumny osi czasu używają tego samego formatu co kolumny daty.
Operatory oparte na tekście
Użyj jednej wartości tekstowej:
| Operator | compare_value | Uwagi |
|---|---|---|
CONTAINS_TEXT, NOT_CONTAINS_TEXT, STARTS_WITH_TEXT |
["search term"] |
Pojedyncza wartość tekstowa |
Operatory sprawdzające, czy wartość jest pusta lub niepusta
Pomiń compare_value albo przekaż pustą tablicę:
| Operator | compare_value |
|---|---|
IS_EMPTY, IS_NOT_EMPTY |
(pomiń) lub [] |
Kolumny wymagane
Kolumny wymagane oznaczają pole jako obowiązkowe, ale nie określają ograniczeń dotyczących jego wartości. Wymagana kolumna może nadal przyjmować dowolną wartość.
Typy kolumn obsługujące wymagane wartości
Następujące 14 typów kolumn można oznaczyć jako wymagane za pomocą add_required_column:
status,dropdown,numbers,date,timeline,people,text,long_text,email,phone,link,rating,country,location
Typy kolumn, których NIE można oznaczyć jako wymagane
Następujących typów kolumn nie można oznaczyć jako wymaganych (API zwraca błąd „Column ids are unsupported due to their types”):
checkbox,week,hour,tags,file,world_clock,vote,color_picker,time_tracking,dependency,button,formula,mirror,lookup,auto_number,integration,doc,progress,subtasks,vote
Kolumny obsługujące wymagane wartości, ale nieobsługujące reguł
Niektóre kolumny można oznaczyć jako wymagane, ale nie obsługują żadnych reguł walidacji:
timeline- można oznaczyć jako wymaganą, ale odrzuca wszystkie operatory w zwykłych regułach oraz w klauzulach IF i THEN.location- można oznaczyć jako wymaganą, ale odrzuca wszystkie operatory w zwykłych regułach oraz w klauzulach IF i THEN.
Obsługa błędów
Błędy walidacji danych
Gdy mutacja API narusza regułę walidacji, odpowiedź zawiera kod statusu 422 i kod DATA_VALIDATIONS_ERROR:
{
"errors": [
{
"message": "data_validation_error",
"extensions": {
"code": "DATA_VALIDATIONS_ERROR",
"status_code": 422,
"error_data": [
{
"itemId": null,
"columnIds": ["numeric_mm1pddwd"],
"message": "'Amount' must be at least [5]"
},
{
"itemId": null,
"columnIds": ["text_mm1pecmq"],
"message": "'Description' must not be empty"
}
]
}
}
]
}
Ważne: pole error_data jest tablicą, a nie pojedynczym obiektem. Jedno żądanie może naruszać reguły w kilku kolumnach - przejrzyj całą tablicę, aby obsłużyć wszystkie błędy.
Błędy związane z planem
Konta bez planu Pro lub Enterprise otrzymują błąd UserUnauthorizedException:
{
"errors": [
{
"message": "UserUnauthorizedException",
"extensions": {
"error_data": {
"failure_reason": "ms-authorization.permissions.data_validation_rules.not_available"
}
}
}
]
}
Zapytanie validations zwracające null
Zapytanie validations zwraca null w polu rules w dwóch przypadkach:
- Na tablicy nie skonfigurowano żadnych reguł.
- Funkcja jest niedostępna (plan Free/Standard; funkcja jest dostępna tylko w planach Pro i Enterprise).
Nie da się odróżnić tych przypadków, więc kod nie może ustalić, czy null oznacza „brak reguł”, czy „brak dostępu do funkcji”. Może być konieczne osobne sprawdzenie planu konta.
Następne kroki
- Dokumentacja Validations - pełna dokumentacja zapytań i mutacji
- Pozostałe typy Validations - typy wejściowe, wyliczenia i szczegóły dotyczące operatorów
- Dokumentacja Columns - typy i identyfikatory kolumn
Jeśli masz pytania, opublikuj je w społeczności deweloperów monday.