# Импорт и экспорт

# Формат экспорта элемента

Элементы экспортируются в JSON следующей структуры:

{
  "id": "5db2ddf6-580b-4eb8-bd5b-9f6989d7b3ee",          // Идентификатор элемента
  "projectId": "FPX6pFkX",                               // Идентификатор проекта
  "title": "Воин",                                       // Название
  "ownTitle": "Воин",                                    // Тоже название... но используйте то, что выше 🤪
  "name": "",                                            // Служебное имя
  "creatorUserId": 28,                                   // Кто создал
  "isAbstract": false,                                   // Является абстрактным или нет 
  "parentIds": [...],                                    // Первый уровень родителей (идентификатор базового элемента/шаблона)
  "typeIds": [...],                                      // Идентификаторы всей цепочка родителей
  "createdAt": "2024-02-15T03:42:27.297Z",               // Когда создан
  "updatedAt": "2024-05-24T16:43:35.181Z",               // Когда обновлен
  "workspaceId": "aa0f0949-53b2-47ef-b7ca-2fb4cc1d36f5", // Идентификатор папки
  "ownIcon": null,                                       // Переопределение иконки
  "icon": "walk-fill",                                   // Иконка
  "index": 4,                                            // Порядок отображения (вещенственное число)
  "values": {                                            // Значения блоков со служебным именем
     "characteristics": {                                // Итоговые значения блока под служебным именем 'characteristics'
        "health": 100
        "attack": 10
     },
     ...
  },
  "blocks": [                                            // Массив блоков, из которых состоит элемент
    {
      "id": "d452c1c0-0a38-483d-91c3-41b376e14c74",      // Идентификатор блока
      "name": "",                                        // Служебное имя блока
      "title": "Описание",                               // Заголовок блока
      "own": false,                                      // Является ли блок собственным или он унаследован
      "type": "text",                                    // Тип блока
      "props": { ... }                                   // Собственные значения блока
      "inherited": { ... },                              // Собственные значения блока
      "computed": { ... },                               // Итоговые значения блока
      "index": 3.42,                                     // Порядок отображения (вещенственное число)
      "createdAt": "2024-02-17T10:05:04.952Z",           // Когда создан
      "updatedAt": "2024-05-24T16:43:35.181Z",           // Когда обновлен
    },
  ],
  "references": [                                        // Прикрепленные к элементу ссылки
    {
     "sourceBlockId":"d452c1c0-0a38-483d-91c3-41b376e14c74",  // Идентификатор блока, к которому прикреплен элемент
     "targetAssetId":"7eecaf25-26c0-478b-a1cf-7445b776be72",  // Идентификатор прикрепленного элемента
     "targetBlockId":null,                                    // Идентификатор блока, который был прикреплен
     "createdAt":"2024-09-27T06:52:04.733Z"                   // Когда создана ссылка
     },
    ...
  ],
}

Мы рекомендуем назначать важным блокам служебные имена. Тогда их значения будут вставляться в поле values объекта. Структура поля зависит от типа блока

Например, вы создаете описание некоторого персонажа, которому хотите задать два атрибута: health (жизни) и attack (сила аттаки). Для этого создаете блок "Таблица свойств" с двумя полями:

Задаете ему служебное имя chracteristics. Тогда в values у элемента будет:

  "values": {
     "characteristics": {              
        "health": 100
        "attack": 10
     },
  },

TIP

Чтобы назначить блоку служебное имя, нажмите на три точки в правой части блока

Обратите внимание, что введенное имя поля было "нормализовано": буквы верхнего регистра заменены на нижний, убраны служебные символы, пробелы заменены на знаки подчеркивания

TIP

Вы можете писать названия свойств и на русском. При необходимости можно переопределить имена свойств, задав им служебные имена

WARNING

Обратите внимание, что по умолчанию все поля в таблице не типизированы, поэтому в зависимости от того, что будет введено в поле, вы можете получать разные типы значений в JSON. Чтобы это предотвратить, задайте нужный тип в настройках поля