Bloki
Workdocs składają się z różnych komponentów nazywanych blokami dokumentu lub blokami. Bloki zawierają różne rodzaje treści, w tym tekst, kod, listy, tytuły, obrazy, filmy i cytaty.
Zapytania
Pobieranie bloków
- Wymagany zakres:
docs:read - Zwraca tablicę zawierającą metadane jednego bloku lub kolekcji bloków
- Można zagnieździć wyłącznie w zapytaniu
docs
query {
docs(ids:1234567) { # the ID returned when querying `docs`
blocks {
id
type
content
}
}
}
query {
docs(object_ids:1234567) { # the ID in the URL
blocks {
id
type
content
}
}
}
Argumenty
| Argument | Typ | Opis |
|---|---|---|
| limit | Int |
Liczba bloków do pobrania. Domyślna wartość to 25. |
| page | Int |
Numer strony do zwrócenia. Numeracja zaczyna się od 1. |
Pola
| Pole | Typ | Opis |
|---|---|---|
| created_at | Date |
Data utworzenia bloku. Zwracana w formacie YYYY-MM-DD. |
| created_by | User |
Osoba, która utworzyła blok. |
| doc_id | ID |
Unikalny identyfikator dokumentu. W interfejsie ten identyfikator pojawia się w lewym górnym rogu dokumentu po aktywowaniu trybu dewelopera. |
| id | String! |
Unikalny identyfikator bloku. |
| parent_block_id | String |
Unikalny identyfikator bloku nadrzędnego. Dla bloków pierwszego poziomu zwracana jest wartość null. |
| position | Float |
Pozycja bloku w dokumencie. |
| type | String |
Typ treści bloku. |
| updated_at | Date |
Data ostatniej aktualizacji bloku. Zwracana w formacie YYYY-MM-DD. |
| content | JSON |
Treść bloku. |
Pole content
Pole content zwraca różne informacje w zależności od typu bloku. Poniżej możesz zobaczyć przykładowe dane dla każdego typu bloku. Pamiętaj jednak, że API zwraca dane w nieco innym formacie, używając znaków ucieczki w JSON-ie.
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "normal text", // "normal text", "large title", "medium title", "small title", or "quote"
"content": {
"alignment": "left", // "left", "center", or "right"
"direction": "ltr", // "ltr" or "rtl"
"deltaFormat": [{
"insert": "document block text",
"attributes": { // description of the text
"bold": true, // bold text
"underline": true, // underlined text
"strike": true, // text with strike through
"color": "var(--color-saladish)", // text with font color
"background": "var(--color-river-selected)" // text with background color
}
}]
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "check list", // "bulleted list", "numbered list", or "check list"
"content": {
"alignment": "right", // "left", "right", or "center"
"direction": "rtl", // "ltr" or "rtl"
"deltaFormat": [{
"insert": "block 1"
}],
"indentation": 1,
"checked": true // checks or unchecks a box
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "table", // "table" or "layout"
"content": {
"cells": [ // the table's rows
[{
"blockId": "7f8c145-989f-48bb-b7f8-dc8f91690g42" // ID of the child block
},
{
"blockId": "8g9d256-090g-59cc-c8g9-ed9g02701h53" // ID of the child block
}
]
],
"alignment": "right", // "left", "right", or "center"
"direction": "rtl", // "ltr" or "rtl"
"columnsStyle": [{ // size of the column by percent - the sum of these values has to be 100
"width": 50
},
{
"width": 50
}
]
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "notice box",
"content": {
"theme": "info", // "tips", "warning", or "general"
"direction": "ltr", // "ltr" or "rtl"
"alignment": "left" // "left", "right", or "center"
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "gif",
"content": {
"id": "123abc456def",
"url": "https://media2.giphy.com/media/123abc456def/311x.gif?cid=1d9492h43&rid=200w.gif&ct=g",
"width": 278,
"alignment": "center", // "left", "right", or "center"
"direction": "ltr", // "ltr" or "rtl"
"aspectRatio": ""
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "image",
"content": {
"url": "https://monday.monday.com/test/resources/123456789/testimage.png",
"width": "900",
"assetId": 123456789,
"alignment": "center", // "left", "right", or "center"
"direction": "ltr", // "ltr" or "rtl"
"aspectRatio": "2380x1230"
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "image",
"content": {
"width": 123, // changes the size of the image
"publicUrl": "https://www.test.com/static/download/testimage.png",
"direction": "rtl", // "ltr" or "rtl"
"alignment": "right" // "left", "right", or "center"
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "video",
"content": {
"url": "https://monday.monday.com/test/987654321/testvideo.mov",
"width": 613,
"assetId": 987654321,
"alignment": "center", // "left", "right", or "center"
"direction": "ltr", // "ltr" or "rtl"
"aspectRatio": null
}
}
{
"id": "7f8c145-989f-48bb-b7f8-dc8f91690g42",
"type": "video",
"content": {
"url": null,
"width": 450,
"rawUrl": "https://www.youtube.com/watch?v=123abc",
"assetId": null,
"alignment": "left", // "left", "right", or "center"
"direction": "ltr", // "ltr" or "rtl"
"embedData": {
"embedlyData": {
"url": "https://www.youtube.com/watch?v=123abc",
"html": "<iframe class=\"embedly-embed\" src=\"//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F123abc&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D123abc&image=http%3A%2F%2Fi.ytimg.com%2Fvi%2F123abc%2Fhqdefault.jpg&key=60f4bf4bdbb750b6b09783043556f314&type=text%2Fhtml&schema=youtube\" width=\"854\" height=\"480\" scrolling=\"no\" title=\"YouTube embed\" frameborder=\"0\" allow=\"autoplay; fullscreen\" allowfullscreen=\"true\"></iframe>",
"type": "video",
"title": "Sample video title",
"width": 854,
"height": 480,
"version": "1.0",
"author_url": "https://www.youtube.com/monday.com",
"author_name": "monday.com",
"description": "This is a sample monday.com video",
"provider_url": "http://youtube.com",
"provider_name": "YouTube",
"thumbnail_url": "http://i.ytimg.com/vi/3lrXMmciw2N/hqdefault.jpg",
"thumbnail_width": 480,
"thumbnail_height": 360
}
}
}
}
Mutacje
Wymagany zakres:docs:write
Tworzenie bloku dokumentu
Tworzy nowy blok dokumentu. Zwraca obiekt DocumentBlock.
Możesz też dodać nowy blok dokumentu za pomocą SDK.
mutation {
create_doc_block(
type: normal_text,
doc_id: 1234567,
after_block_id: "7f8c145-989f-48bb-b7f8-dc8f91690g42",
content: "{\"alignment\":\"left\",\"direction\":\"ltr\",\"deltaFormat\":[{\"insert\":\"new block\"}]}"
) {
id
}
}
Argumenty
| Argument | Typ | Opis | Wartości wyliczeniowe |
|---|---|---|---|
| after_block_id | String |
Unikalny identyfikator bloku, który ma znajdować się nad nowym blokiem. Określa, gdzie w dokumencie ma zostać dodany nowy blok. Jeśli nie podasz tego argumentu, nowy blok pojawi się na początku dokumentu. | |
| doc_id | ID! |
Unikalny identyfikator dokumentu. | |
| parent_block_id | String |
Identyfikator bloku nadrzędnego, w ramach którego zostanie utworzony nowy blok. | |
| type | DocBlockContentType! |
Typ treści bloku. | bulleted_listcheck_listcodedividerimagelarge_titlelayoutmedium_titlenormal_textnotice_box, numbered_listpage_breakquotesmall_titletablevideo |
| content | DocBlockContentType! |
Treść bloku. |
Argument content
Podczas tworzenia bloku treść musi być zgodna ze składnią JSON i zawierać wszystkie wymagane atrybuty.
W przypadku bloków tekstowych i większości pozostałych typów bloków wszystkie atrybuty są opcjonalne. Możesz użyć tych samych pól i atrybutów, które są zwracane podczas pobierania treści bloku.
Tabele mają dwa wymagane atrybuty: column_count i row_count. Mogą zawierać maksymalnie 25 wierszy i 10 kolumn. Po ustawieniu wymiarów tabeli nie można ich zmienić. Atrybut column_style jest opcjonalny. Możesz go użyć, aby określić rozmiar każdej komórki. Suma szerokości komórek musi wynosić 100.
Układy wymagają pola column_count, które określa rozmiar układu. Możesz użyć opcjonalnego atrybutu column_style, aby określić rozmiar każdej komórki w układzie. Suma szerokości komórek musi wynosić 100.
Tworzenie bloków dokumentu
Dostępne tylko w wersji 2026-07 i nowszych
Tworzy zbiorczo maksymalnie 25 bloków dokumentu. Zwraca [DocumentBlockV2!].
mutation {
create_doc_blocks(
docId: 12345
blocksInput: [
{
text_block: {
text_block_type: QUOTE
delta_format: [
{
insert: {
text: "The best way to predict the future is to create it."
}
attributes: {
italic: true
color: "#666666"
}
}
{
insert: {
text: "Peter Drucker"
}
attributes: {
bold: true
color: "#999999"
}
}
]
}
}
{
text_block: {
text_block_type: LARGE_TITLE
delta_format: [
{
insert: {
text: "This quote highlights the power of action and ownership."
}
}
]
}
}
{
notice_box_block: {
theme: TIPS
}
}
{
list_block: {
list_block_type: BULLETED_LIST
delta_format: [
{
insert: {
text: "Set clear objectives"
}
}
]
}
}
{
list_block: {
list_block_type: BULLETED_LIST
delta_format: [
{
insert: {
text: "Take small, consistent steps"
}
}
]
}
}
{
list_block: {
list_block_type: BULLETED_LIST
delta_format: [
{
insert: {
text: "Review and adjust regularly"
}
}
]
}
}
{
page_break_block: {}
}
]
) {
doc_id
id
type
position
content {
... on TextBlockContent {
delta_format {
insert {
text
}
}
}
... on ListBlockContent {
delta_format {
insert {
text
}
}
}
}
}
}
{
"data": {
"create_doc_blocks": [
{
"doc_id": "12345",
"id": "11111111-1111-1111-1111-111111111111",
"type": "quote",
"position": 100000,
"content": [
{
"delta_format": [
{
"insert": {
"text": "The best way to predict the future is to create it."
}
},
{
"insert": {
"text": "Peter Drucker"
}
}
]
}
]
},
{
"doc_id": "12345",
"id": "22222222-2222-2222-2222-222222222222",
"type": "large title",
"position": 141250,
"content": [
{
"delta_format": [
{
"insert": {
"text": "This quote highlights the power of action and ownership."
}
}
]
}
]
},
{
"doc_id": "12345",
"id": "33333333-3333-3333-3333-333333333333",
"type": "notice box",
"position": 189875,
"content": [
{}
]
},
{
"doc_id": "12345",
"id": "44444444-4444-4444-4444-444444444444",
"type": "bulleted list",
"position": 235420,
"content": [
{
"delta_format": [
{
"insert": {
"text": "Set clear objectives"
}
}
]
}
]
},
{
"doc_id": "12345",
"id": "55555555-5555-5555-5555-555555555555",
"type": "bulleted list",
"position": 287965,
"content": [
{
"delta_format": [
{
"insert": {
"text": "Take small, consistent steps"
}
}
]
}
]
},
{
"doc_id": "12345",
"id": "66666666-6666-6666-6666-666666666666",
"type": "bulleted list",
"position": 346780,
"content": [
{
"delta_format": [
{
"insert": {
"text": "Review and adjust regularly"
}
}
]
}
]
},
{
"doc_id": "12345",
"id": "77777777-7777-7777-7777-777777777777",
"type": "page break",
"position": 412555,
"content": [
{}
]
}
]
},
"extensions": {
"request_id": "YOUR_REQUEST_ID"
}
}
Argumenty
| Argument | Typ | Opis |
|---|---|---|
| afterBlockId | String |
Unikalny identyfikator bloku, który ma znajdować się nad nowym blokiem. Określa, gdzie w dokumencie mają zostać dodane nowe bloki. Jeśli nie podasz tego argumentu, nowe bloki zostaną wstawione w kolejności z żądania - w miejscu wskazanym przez parentBlockId lub na końcu dokumentu. |
| blocksInput | [CreateBlockInput!]! |
Tablica danych wejściowych bloków. Każdy element musi określać jeden typ bloku. Maksymalnie 25 bloków na żądanie. |
| docId | ID! |
Unikalny identyfikator dokumentu. |
Aktualizowanie bloku dokumentu
Aktualizuje blok dokumentu. Zwraca obiekt DocumentBlock.
Możesz też zaktualizować blok dokumentu za pomocą SDK.
mutation {
update_doc_block(
block_id: "7f8c145-989f-48bb-b7f8-dc8f91690g42"
content: "{\"alignment\":\"left\",\"direction\":\"ltr\",\"deltaFormat\":[{\"insert\":\"new block\"}]}"
) {
id
}
}
Argumenty
| Argument | Typ | Opis |
|---|---|---|
| block_id | String! |
Unikalny identyfikator bloku. |
| content | JSON! |
Treść bloku. |
Argument content
Podczas aktualizowania bloku treść musi być zgodna ze składnią JSON i zawierać wszystkie wymagane atrybuty.
W przypadku bloków tekstowych i większości pozostałych typów bloków wszystkie atrybuty są opcjonalne. Możesz użyć tych samych pól i atrybutów, które są zwracane podczas pobierania treści bloku.
Tabele mają dwa wymagane atrybuty: column_count i row_count. Maksymalna wartość każdego z nich to 5. Po ich ustawieniu nie można ich zmienić. Atrybut column_style jest opcjonalny. Możesz go użyć, aby określić rozmiar każdej komórki. Suma szerokości komórek musi wynosić 100.
Układy mają jeden wymagany atrybut: column_count. Opcjonalnie możesz też użyć atrybutu column_style, aby określić rozmiar każdej komórki w układzie. Suma szerokości komórek musi wynosić 100.
Usuwanie bloku dokumentu
Usuwa blok dokumentu. Zwraca obiekt DocumentBlock.
mutation {
delete_doc_block(block_id: "7f8c145-989f-48bb-b7f8-dc8f91690g42") {
id
}
}
Argumenty
| Argument | Typ | Opis |
|---|---|---|
| block_id | String! |
Unikalny identyfikator bloku. |