Dokumentacja dla programistów

Bloki

Aktualizacja 2026-09-06

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
GraphQL (`ids` argument)
query {
  docs(ids:1234567) { # the ID returned when querying `docs`
    blocks {
      id
      type
      content
    }
  }
}
GraphQL (`object_ids` argument)
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.

Text
{
  "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
      }
    }]
  }
}
List
{
    "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
    }
}
Table and layout
{
    "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
            }
        ]
    }
}
Notice box
{
  "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"
  }
}
GIF
{
    "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": ""
    }
}
Image: monday asset
{
    "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"
    }
}
Image: public URL
{
    "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"
    }
}
Video: monday asset
{
    "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
    }
}
Video: raw URL
{
    "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_list
check_list
code
divider
image
large_title
layout
medium_title
normal_text
notice_box, numbered_list
page_break
quote
small_title
table
video
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.