{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "imports-v2/boards.json",
  "title": "Boards",
  "description": "A board: the set of columns and lanes where cards of one kind of work move, such as \"KPI tracking\". Columns and lanes are separate resources that point at the board with `board_ref`, and `space_boards` puts the board into a space. Fields left out take the defaults of the app; a board without lanes gets one default lane. Give each board at least one column; a board without a `space_boards` record is placed in the space chosen for the import.",
  "type": "object",
  "properties": {
    "external_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "Your own identifier of the record, for example `k-mrr`, unique within the resource across all of its files and case sensitive. Other records refer to this one by it. The import also keeps it as the external id of the object it creates."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Name of the board, for example `KPI tracking`. Up to 128 characters."
    },
    "description": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "format": {
          "type": "string",
          "enum": [
            "plain_text",
            "markdown",
            "html"
          ]
        },
        "text": {
          "type": "string"
        }
      },
      "required": [
        "format",
        "text"
      ],
      "additionalProperties": false,
      "x-link-tokens": [
        {
          "scheme": "attachment",
          "resource": "attachments"
        },
        {
          "scheme": "card",
          "resource": "cards"
        },
        {
          "scheme": "document",
          "resource": "documents"
        }
      ],
      "description": "Text shown on the board's information page; give the format with the text."
    },
    "default_card_type_ref": {
      "type": [
        "string",
        "null"
      ],
      "minLength": 1,
      "maxLength": 512,
      "x-ref": "card_types",
      "description": "The card type that new cards of this board start with, by the external_id of a `card_types` record."
    },
    "card_properties": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "enum": [
              "size",
              "due_date",
              "tags",
              "timeline",
              "description"
            ],
            "description": "A built-in card field of the entry."
          },
          "required": {
            "type": "boolean",
            "description": "Whether the field must be filled; the default is false."
          }
        },
        "required": [
          "field"
        ],
        "additionalProperties": false
      },
      "description": "Built-in card fields (size, due_date, tags, timeline, description) that the cards of this board always show. With `required: true` the field must also be filled, and a card where it is empty shows a warning. Each entry applies to all lanes, columns and card types of the board."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$",
      "description": "When the record was created, with a time zone, for example `2026-01-12T09:30:00Z`.",
      "x-default-text": "source.exported_at of the manifest"
    }
  },
  "required": [
    "external_id",
    "title"
  ],
  "additionalProperties": false
}
