Categories
WebOps

How to import Restya board into Wekan

Import Restya board into Wekan using Bourne-again shell script to convert the JSON file.

This is a simple proof of concept shell script.

Step 1

Install Restyaboard. It was described earlier.

Step 2

Choose the Restya board to export.

Restyaboard

Step 3

Export the board as a JSON file.

You will end up with a similar JSON file.

{
  "id": 4,
  "name": "ToDo",
  "created": "2020-05-31T14:11:21",
  "modified": "2020-07-15T13:47:39",
  "username": "admin",
  "full_name": "New Admin",
  "profile_picture_path": "client/img/default-admin-user.png",
  "initials": "PA",
  "user_id": 1,
  "organization_id": 0,
  "board_visibility": 0,
  "background_color": null,
  "background_picture_url": null,
  "commenting_permissions": null,
  "voting_permissions": null,
  "is_closed": 0,
  "is_allow_organization_members_to_join": 0,
  "boards_user_count": 1,
  "list_count": 4,
  "card_count": 4,
  "archived_list_count": 0,
  "archived_card_count": 0,
  "boards_subscriber_count": 1,
  "background_pattern_url": null,
  "is_show_image_front_of_card": 1,
  "music_name": null,
  "music_content": null,
  "organization_name": null,
  "organization_website_url": null,
  "organization_description": null,
  "organization_logo_url": null,
  "organization_visibility": null,
  "activities": [
    {
      "id": 36,
      "created": "2020-07-15T14:36:26",
      "modified": "2020-07-15T14:36:26",
      "board_id": 4,
      "list_id": 0,
      "card_id": 0,
      "user_id": 1,
      "attachment_id": null,
      "type": "update_label",
      "comment": "##USER_NAME## updated Blog label on ##BOARD_NAME##",
      "revisions": "{\"id\":\"3\"}",
      "root": 0,
      "freshness_ts": null,
      "depth": 0,
      "path": null,
      "materialized_path": null,
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 35,
      "created": "2020-07-15T14:15:54",
      "modified": "2020-07-15T14:15:54",
      "board_id": 4,
      "list_id": 204,
      "card_id": 2,
      "user_id": 1,
      "attachment_id": 2,
      "type": "edit_card",
      "comment": "##USER_NAME## renamed ##CARD_LINK##",
      "revisions": "a:2:{s:9:\"old_value\";a:1:{s:4:\"name\";s:87:\"Create proof of concept shell script to convert Restyaboard JSON to Wekan JSON format\r\n\";}s:9:\"new_value\";a:1:{s:4:\"name\";s:85:\"Create proof of concept shell script to convert Restyaboard JSON to Wekan JSON format\";}}",
      "root": 0,
      "freshness_ts": "2020-07-15T14:15:54.481854",
      "depth": 0,
      "path": "P35",
      "materialized_path": "0000000z",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 34,
      "created": "2020-07-15T13:47:39",
      "modified": "2020-07-15T13:47:39",
      "board_id": 4,
      "list_id": 0,
      "card_id": 0,
      "user_id": 1,
      "attachment_id": 4,
      "type": "edit_board",
      "comment": "##USER_NAME## renamed ##BOARD_NAME## board.",
      "revisions": "a:2:{s:9:\"old_value\";a:1:{s:4:\"name\";s:4:\"test\";}s:9:\"new_value\";a:1:{s:4:\"name\";s:4:\"ToDo\";}}",
      "root": 0,
      "freshness_ts": "2020-07-15T13:47:39.744837",
      "depth": 0,
      "path": "P34",
      "materialized_path": "0000000y",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 33,
      "created": "2020-07-15T13:47:00",
      "modified": "2020-07-15T13:47:00",
      "board_id": 4,
      "list_id": 201,
      "card_id": 0,
      "user_id": 1,
      "attachment_id": 201,
      "type": "list_change_min",
      "comment": "##USER_NAME## minimized the ##LIST_NAME## list",
      "revisions": "a:2:{s:9:\"old_value\";a:1:{s:13:\"custom_fields\";N;}s:9:\"new_value\";a:1:{s:13:\"custom_fields\";s:22:\"{\"list_collapse\":true}\";}}",
      "root": 0,
      "freshness_ts": "2020-07-15T13:47:00.717612",
      "depth": 0,
      "path": "P33",
      "materialized_path": "0000000x",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 32,
      "created": "2020-07-15T12:39:01",
      "modified": "2020-07-15T12:39:01",
      "board_id": 4,
      "list_id": 204,
      "card_id": 2,
      "user_id": 1,
      "attachment_id": 4,
      "type": "add_card_label",
      "comment": "##USER_NAME## added label(s) to the card ##CARD_LINK## - Wekan, GitHub",
      "revisions": null,
      "root": 0,
      "freshness_ts": "2020-07-15T12:39:01.939984",
      "depth": 0,
      "path": "P32",
      "materialized_path": "0000000w",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 31,
      "created": "2020-07-15T12:38:42",
      "modified": "2020-07-15T12:38:42",
      "board_id": 4,
      "list_id": 203,
      "card_id": 3,
      "user_id": 1,
      "attachment_id": 2,
      "type": "add_card_label",
      "comment": "##USER_NAME## added label(s) to the card ##CARD_LINK## - Wekan",
      "revisions": null,
      "root": 0,
      "freshness_ts": "2020-07-15T12:38:42.576506",
      "depth": 0,
      "path": "P31",
      "materialized_path": "0000000v",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 30,
      "created": "2020-07-15T12:38:34",
      "modified": "2020-07-15T12:38:34",
      "board_id": 4,
      "list_id": 202,
      "card_id": 4,
      "user_id": 1,
      "attachment_id": 2,
      "type": "add_card_label",
      "comment": "##USER_NAME## added label(s) to the card ##CARD_LINK## - Wekan",
      "revisions": null,
      "root": 0,
      "freshness_ts": "2020-07-15T12:38:34.091774",
      "depth": 0,
      "path": "P30",
      "materialized_path": "0000000u",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 29,
      "created": "2020-07-15T12:38:26",
      "modified": "2020-07-15T12:38:26",
      "board_id": 4,
      "list_id": 202,
      "card_id": 5,
      "user_id": 1,
      "attachment_id": 3,
      "type": "add_card_label",
      "comment": "##USER_NAME## added label(s) to the card ##CARD_LINK## - Wekan, Blog",
      "revisions": null,
      "root": 0,
      "freshness_ts": "2020-07-15T12:38:26.181555",
      "depth": 0,
      "path": "P29",
      "materialized_path": "0000000t",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 28,
      "created": "2020-07-15T12:38:15",
      "modified": "2020-07-15T12:38:15",
      "board_id": 4,
      "list_id": 202,
      "card_id": 5,
      "user_id": 1,
      "attachment_id": 5,
      "type": "edit_card",
      "comment": "##USER_NAME## renamed ##CARD_LINK##",
      "revisions": "a:2:{s:9:\"old_value\";a:1:{s:4:\"name\";s:6:\"test 4\";}s:9:\"new_value\";a:1:{s:4:\"name\";s:48:\"Create blog post about Wekan import shell script\";}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:38:15.65556",
      "depth": 0,
      "path": "P28",
      "materialized_path": "0000000s",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 27,
      "created": "2020-07-15T12:37:56",
      "modified": "2020-07-15T12:37:56",
      "board_id": 4,
      "list_id": 201,
      "card_id": 5,
      "user_id": 1,
      "attachment_id": 202,
      "type": "move_card",
      "comment": "##USER_NAME## moved the card ##CARD_LINK## to Todo - This Week",
      "revisions": "a:2:{s:9:\"old_value\";a:2:{s:7:\"list_id\";s:3:\"201\";s:8:\"position\";s:5:\"3.125\";}s:9:\"new_value\";a:2:{s:7:\"list_id\";i:202;s:8:\"position\";d:3.25;}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:37:56.763516",
      "depth": 0,
      "path": "P27",
      "materialized_path": "0000000r",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 26,
      "created": "2020-07-15T12:37:52",
      "modified": "2020-07-15T12:37:52",
      "board_id": 4,
      "list_id": 201,
      "card_id": 4,
      "user_id": 1,
      "attachment_id": 202,
      "type": "move_card",
      "comment": "##USER_NAME## moved the card ##CARD_LINK## to Todo - This Week",
      "revisions": "a:2:{s:9:\"old_value\";a:2:{s:7:\"list_id\";s:3:\"201\";s:8:\"position\";s:4:\"2.25\";}s:9:\"new_value\";a:2:{s:7:\"list_id\";i:202;s:8:\"position\";d:2.25;}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:37:52.822083",
      "depth": 0,
      "path": "P26",
      "materialized_path": "0000000q",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 25,
      "created": "2020-07-15T12:37:48",
      "modified": "2020-07-15T12:37:48",
      "board_id": 4,
      "list_id": 201,
      "card_id": 4,
      "user_id": 1,
      "attachment_id": 4,
      "type": "edit_card",
      "comment": "##USER_NAME## renamed ##CARD_LINK##",
      "revisions": "a:2:{s:9:\"old_value\";a:1:{s:4:\"name\";s:6:\"test 3\";}s:9:\"new_value\";a:1:{s:4:\"name\";s:40:\"Add labels for Wekan import shell script\";}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:37:48.43165",
      "depth": 0,
      "path": "P25",
      "materialized_path": "0000000p",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 24,
      "created": "2020-07-15T12:37:29",
      "modified": "2020-07-15T12:37:29",
      "board_id": 4,
      "list_id": 202,
      "card_id": 3,
      "user_id": 1,
      "attachment_id": 203,
      "type": "move_card",
      "comment": "##USER_NAME## moved the card ##CARD_LINK## to Doing - Today",
      "revisions": "a:2:{s:9:\"old_value\";a:2:{s:7:\"list_id\";s:3:\"202\";s:8:\"position\";s:3:\"1.5\";}s:9:\"new_value\";a:2:{s:7:\"list_id\";i:203;s:8:\"position\";d:1.5;}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:37:29.258112",
      "depth": 0,
      "path": "P24",
      "materialized_path": "0000000o",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 23,
      "created": "2020-07-15T12:37:26",
      "modified": "2020-07-15T12:37:26",
      "board_id": 4,
      "list_id": 201,
      "card_id": 3,
      "user_id": 1,
      "attachment_id": 202,
      "type": "move_card",
      "comment": "##USER_NAME## moved the card ##CARD_LINK## to Todo - This Week",
      "revisions": "a:2:{s:9:\"old_value\";a:2:{s:7:\"list_id\";s:3:\"201\";s:8:\"position\";s:3:\"1.5\";}s:9:\"new_value\";a:2:{s:7:\"list_id\";i:202;s:8:\"position\";d:1.5;}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:37:26.174011",
      "depth": 0,
      "path": "P23",
      "materialized_path": "0000000n",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 22,
      "created": "2020-07-15T12:37:21",
      "modified": "2020-07-15T12:37:21",
      "board_id": 4,
      "list_id": 201,
      "card_id": 3,
      "user_id": 1,
      "attachment_id": 3,
      "type": "edit_card",
      "comment": "##USER_NAME## renamed ##CARD_LINK##",
      "revisions": "a:2:{s:9:\"old_value\";a:1:{s:4:\"name\";s:6:\"test 2\";}s:9:\"new_value\";a:1:{s:4:\"name\";s:29:\"Fix Wekan import shell script\";}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:37:21.006529",
      "depth": 0,
      "path": "P22",
      "materialized_path": "0000000m",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 21,
      "created": "2020-07-15T12:35:54",
      "modified": "2020-07-15T12:35:54",
      "board_id": 4,
      "list_id": 201,
      "card_id": 2,
      "user_id": 1,
      "attachment_id": 204,
      "type": "move_card",
      "comment": "##USER_NAME## moved the card ##CARD_LINK## to Done",
      "revisions": "a:2:{s:9:\"old_value\";a:2:{s:7:\"list_id\";s:3:\"201\";s:8:\"position\";s:1:\"1\";}s:9:\"new_value\";a:2:{s:7:\"list_id\";i:204;s:8:\"position\";i:1;}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:35:54.326438",
      "depth": 0,
      "path": "P21",
      "materialized_path": "0000000l",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 20,
      "created": "2020-07-15T12:35:48",
      "modified": "2020-07-15T12:35:48",
      "board_id": 4,
      "list_id": 201,
      "card_id": 2,
      "user_id": 1,
      "attachment_id": 2,
      "type": "edit_card",
      "comment": "##USER_NAME## renamed ##CARD_LINK##",
      "revisions": "a:2:{s:9:\"old_value\";a:1:{s:4:\"name\";s:5:\"test1\";}s:9:\"new_value\";a:1:{s:4:\"name\";s:87:\"Create proof of concept shell script to convert Restyaboard JSON to Wekan JSON format\r\n\";}}",
      "root": 0,
      "freshness_ts": "2020-07-15T12:35:48.285632",
      "depth": 0,
      "path": "P20",
      "materialized_path": "0000000k",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 10,
      "created": "2020-05-31T14:14:01",
      "modified": "2020-05-31T14:14:01",
      "board_id": 4,
      "list_id": 201,
      "card_id": 5,
      "user_id": 1,
      "attachment_id": 201,
      "type": "add_card",
      "comment": "##USER_NAME## added card ##CARD_LINK## to list \"Todo\".",
      "revisions": "",
      "root": 0,
      "freshness_ts": "2020-05-31T14:14:01.378558",
      "depth": 0,
      "path": "P10",
      "materialized_path": "0000000a",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 9,
      "created": "2020-05-31T14:13:59",
      "modified": "2020-05-31T14:13:59",
      "board_id": 4,
      "list_id": 201,
      "card_id": 4,
      "user_id": 1,
      "attachment_id": 201,
      "type": "add_card",
      "comment": "##USER_NAME## added card ##CARD_LINK## to list \"Todo\".",
      "revisions": "",
      "root": 0,
      "freshness_ts": "2020-05-31T14:13:59.296804",
      "depth": 0,
      "path": "P9",
      "materialized_path": "00000009",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    },
    {
      "id": 8,
      "created": "2020-05-31T14:13:57",
      "modified": "2020-05-31T14:13:57",
      "board_id": 4,
      "list_id": 201,
      "card_id": 3,
      "user_id": 1,
      "attachment_id": 201,
      "type": "add_card",
      "comment": "##USER_NAME## added card ##CARD_LINK## to list \"Todo\".",
      "revisions": "",
      "root": 0,
      "freshness_ts": "2020-05-31T14:13:57.262071",
      "depth": 0,
      "path": "P8",
      "materialized_path": "00000008",
      "username": "admin",
      "role_id": 1,
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    }
  ],
  "boards_subscribers": [
    {
      "id": 3,
      "created": "2020-05-31T14:11:21",
      "modified": "2020-05-31T14:11:21",
      "board_id": 4,
      "user_id": 1,
      "is_subscribed": 1
    }
  ],
  "boards_stars": null,
  "attachments": null,
  "lists": [
    {
      "id": 201,
      "created": "2020-05-31T14:11:21",
      "modified": "2020-07-15T13:47:00",
      "board_id": 4,
      "name": "Todo",
      "position": 1,
      "is_archived": 0,
      "card_count": 0,
      "lists_subscriber_count": 0,
      "cards": null,
      "lists_subscribers": null,
      "custom_fields": "{\"list_collapse\":true}",
      "color": null
    },
    {
      "id": 202,
      "created": "2020-05-31T14:11:21",
      "modified": "2020-05-31T14:11:21",
      "board_id": 4,
      "name": "Todo - This Week",
      "position": 2,
      "is_archived": 0,
      "card_count": 2,
      "lists_subscriber_count": 0,
      "cards": [
        {
          "id": 4,
          "created": "2020-05-31T14:13:59",
          "modified": "2020-07-15T12:37:52",
          "board_id": 4,
          "list_id": 202,
          "name": "Add labels for Wekan import shell script",
          "description": null,
          "due_date": null,
          "to_date": null,
          "position": 2.25,
          "is_archived": 0,
          "attachment_count": 0,
          "checklist_count": 0,
          "checklist_item_count": 0,
          "checklist_item_completed_count": 0,
          "label_count": 2,
          "cards_user_count": 0,
          "cards_subscriber_count": 0,
          "card_voter_count": 0,
          "activity_count": 0,
          "user_id": 1,
          "title": "Add labels for Wekan import shell script",
          "start": null,
          "end": null,
          "cards_checklists": null,
          "cards_users": null,
          "cards_voters": null,
          "cards_subscribers": null,
          "cards_labels": [
            {
              "label_id": 2,
              "id": 4,
              "card_id": 4,
              "list_id": 202,
              "board_id": 4,
              "name": "Wekan",
              "color": null
            }
          ],
          "comment_count": 0,
          "custom_fields": null,
          "color": null,
          "notification_due_date": null,
          "is_due_date_notification_sent": false,
          "archived_date": null,
          "list_moved_date": "2020-07-15T12:37:52",
          "card_created_user": "New Admin"
        },
        {
          "id": 5,
          "created": "2020-05-31T14:14:01",
          "modified": "2020-07-15T12:38:15",
          "board_id": 4,
          "list_id": 202,
          "name": "Create blog post about Wekan import shell script",
          "description": null,
          "due_date": null,
          "to_date": null,
          "position": 3.25,
          "is_archived": 0,
          "attachment_count": 0,
          "checklist_count": 0,
          "checklist_item_count": 0,
          "checklist_item_completed_count": 0,
          "label_count": 1,
          "cards_user_count": 0,
          "cards_subscriber_count": 0,
          "card_voter_count": 0,
          "activity_count": 0,
          "user_id": 1,
          "title": "Create blog post about Wekan import shell script",
          "start": null,
          "end": null,
          "cards_checklists": null,
          "cards_users": null,
          "cards_voters": null,
          "cards_subscribers": null,
          "cards_labels": [
            {
              "label_id": 2,
              "id": 2,
              "card_id": 5,
              "list_id": 202,
              "board_id": 4,
              "name": "Wekan",
              "color": null
            },
            {
              "label_id": 3,
              "id": 3,
              "card_id": 5,
              "list_id": 202,
              "board_id": 4,
              "name": "Blog",
              "color": "#23719f"
            }
          ],
          "comment_count": 0,
          "custom_fields": null,
          "color": null,
          "notification_due_date": null,
          "is_due_date_notification_sent": false,
          "archived_date": null,
          "list_moved_date": "2020-07-15T12:37:56",
          "card_created_user": "New Admin"
        }
      ],
      "lists_subscribers": null,
      "custom_fields": null,
      "color": null
    },
    {
      "id": 203,
      "created": "2020-05-31T14:11:21",
      "modified": "2020-05-31T14:11:21",
      "board_id": 4,
      "name": "Doing - Today",
      "position": 3,
      "is_archived": 0,
      "card_count": 1,
      "lists_subscriber_count": 0,
      "cards": [
        {
          "id": 3,
          "created": "2020-05-31T14:13:57",
          "modified": "2020-07-15T12:37:29",
          "board_id": 4,
          "list_id": 203,
          "name": "Fix Wekan import shell script",
          "description": null,
          "due_date": null,
          "to_date": null,
          "position": 1.5,
          "is_archived": 0,
          "attachment_count": 0,
          "checklist_count": 0,
          "checklist_item_count": 0,
          "checklist_item_completed_count": 0,
          "label_count": 3,
          "cards_user_count": 0,
          "cards_subscriber_count": 0,
          "card_voter_count": 0,
          "activity_count": 0,
          "user_id": 1,
          "title": "Fix Wekan import shell script",
          "start": null,
          "end": null,
          "cards_checklists": null,
          "cards_users": null,
          "cards_voters": null,
          "cards_subscribers": null,
          "cards_labels": [
            {
              "label_id": 2,
              "id": 5,
              "card_id": 3,
              "list_id": 203,
              "board_id": 4,
              "name": "Wekan",
              "color": null
            }
          ],
          "comment_count": 0,
          "custom_fields": null,
          "color": null,
          "notification_due_date": null,
          "is_due_date_notification_sent": false,
          "archived_date": null,
          "list_moved_date": "2020-07-15T12:37:29",
          "card_created_user": "New Admin"
        }
      ],
      "lists_subscribers": null,
      "custom_fields": null,
      "color": null
    },
    {
      "id": 204,
      "created": "2020-05-31T14:11:21",
      "modified": "2020-05-31T14:11:21",
      "board_id": 4,
      "name": "Done",
      "position": 4,
      "is_archived": 0,
      "card_count": 1,
      "lists_subscriber_count": 0,
      "cards": [
        {
          "id": 2,
          "created": "2020-05-31T14:13:54",
          "modified": "2020-07-15T14:15:54",
          "board_id": 4,
          "list_id": 204,
          "name": "Create proof of concept shell script to convert Restyaboard JSON to Wekan JSON format",
          "description": null,
          "due_date": null,
          "to_date": null,
          "position": 1,
          "is_archived": 0,
          "attachment_count": 0,
          "checklist_count": 0,
          "checklist_item_count": 0,
          "checklist_item_completed_count": 0,
          "label_count": 1,
          "cards_user_count": 0,
          "cards_subscriber_count": 0,
          "card_voter_count": 0,
          "activity_count": 0,
          "user_id": 1,
          "title": "Create proof of concept shell script to convert Restyaboard JSON to Wekan JSON format",
          "start": null,
          "end": null,
          "cards_checklists": null,
          "cards_users": null,
          "cards_voters": null,
          "cards_subscribers": null,
          "cards_labels": [
            {
              "label_id": 2,
              "id": 6,
              "card_id": 2,
              "list_id": 204,
              "board_id": 4,
              "name": "Wekan",
              "color": null
            },
            {
              "label_id": 4,
              "id": 7,
              "card_id": 2,
              "list_id": 204,
              "board_id": 4,
              "name": "GitHub",
              "color": null
            }
          ],
          "comment_count": 0,
          "custom_fields": null,
          "color": null,
          "notification_due_date": null,
          "is_due_date_notification_sent": false,
          "archived_date": null,
          "list_moved_date": "2020-07-15T12:35:54",
          "card_created_user": "New Admin"
        }
      ],
      "lists_subscribers": null,
      "custom_fields": null,
      "color": null
    }
  ],
  "boards_users": [
    {
      "id": 4,
      "created": "2020-05-31T14:11:21",
      "modified": "2020-05-31T14:11:21",
      "board_id": 4,
      "user_id": 1,
      "board_user_role_id": 1,
      "username": "admin",
      "email": "board@restya.com",
      "full_name": "New Admin",
      "is_active": 1,
      "is_email_confirmed": 1,
      "board_name": "ToDo",
      "profile_picture_path": "client/img/default-admin-user.png",
      "initials": "PA"
    }
  ],
  "default_email_list_id": 201,
  "is_default_email_position_as_bottom": false,
  "custom_fields": null,
  "auto_subscribe_on_board": true,
  "auto_subscribe_on_card": true,
  "sort_by": null,
  "sort_direction": null,
  "support_list_id": null,
  "support_custom_fields": null,
  "google_syn_url": "https://192.168.50.201//ical/4/1/3765a8cb64fce98b634a3fee8c22f83a.ics",
  "acl_links": [
    {
      "board_user_role_id": 1,
      "slug": "add_board_users",
      "url": "/boards/?/users",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "send_back_to_archived_list",
      "url": "/boards/?/lists/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_sync_calendar",
      "url": "/boards/?/sync_calendar",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "copy_board",
      "url": "/boards/?/copy",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_all_archived_cards",
      "url": "/boards/?/cards",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_all_archived_lists",
      "url": "/boards/?/lists",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_labels",
      "url": "/boards/?/labels/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_board",
      "url": "/boards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "remove_board_user",
      "url": "/boards/?/boards_users/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "subscribe_board",
      "url": "/boards/?/board_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "board_subscriber",
      "url": "/boards/?/board_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_board_user",
      "url": "/boards_users/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_custom_background",
      "url": "/boards/?/custom_backgrounds",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_board_activities",
      "url": "/boards/?/activities",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_list",
      "url": "/boards/?/lists",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "archive_list",
      "url": "/boaards/?/lists/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_list",
      "url": "/boards/?/lists/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_list",
      "url": "/boards/?/lists/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "subscribe_list",
      "url": "/boards/?/lists/?/list_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "unsubscribe_list",
      "url": "/boards/?/lists/?/list_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_archived_lists",
      "url": "/boards/?/archived_lists",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_card",
      "url": "/boards/?/lists/?/cards",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_checklists",
      "url": "/boards/?/lists/?/cards/?/checklists",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_checklist_item",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "archive_card",
      "url": "/boards/?/lists/?/cards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "send_back_to_archived_card",
      "url": "/boards/?/lists/?/cards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_labels",
      "url": "/boards/?/lists/?/cards/?/labels",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_card_user",
      "url": "/boards/?/lists/?/cards/?/users/?",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_card_activities",
      "url": "/boards/?/lists/?/cards/?/activities",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_checklist_listing",
      "url": "/boards/?/lists/?/cards/?/checklists",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "convert_item_to_card",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items/?/convert_to_card",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "copy_card",
      "url": "/boards/?/lists/?/cards/?/copy",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_card",
      "url": "/boards/?/lists/?/cards/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_checklist",
      "url": "/boards/?/lists/?/cards/?/checklists/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_comment",
      "url": "/boards/?/lists/?/cards/?/comments/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_checklist_item",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "download_attachment_card",
      "url": "/download/?",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_card",
      "url": "/boards/?/lists/?/cards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_checklist",
      "url": "/boards/?/lists/?/cards/?/checklists/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_comment",
      "url": "/boards/?/lists/?/cards/?/comments/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_checklist_item",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "move_list_cards",
      "url": "/boards/?/lists/?/cards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "comment_card",
      "url": "/boards/?/lists/?/cards/?/comments",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "remove_card_attachment",
      "url": "/boards/?/lists/?/cards/?/attachments/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_card_user",
      "url": "/boards/?/lists/?/cards/?/cards_users/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_card_search",
      "url": "/boards/?/cards/search",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "subscribe_card",
      "url": "/boards/?/lists/?/cards/?/card_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "unsubscribe_card",
      "url": "/boards/?/lists/?/cards/?/card_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "unvote_card",
      "url": "/boards/?/lists/?/cards/?/card_voters/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "add_card_attachment",
      "url": "/boards/?/lists/?/cards/?/attachments",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_archived_cards",
      "url": "/boards/?/archived_cards",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_card_labels",
      "url": "/boards/?/lists/?/cards/?/labels",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "vote_card",
      "url": "/boards/?/lists/?/cards/?/card_voters",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_sync_calendar",
      "url": "/boards/?/sync_calendar",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "copy_board",
      "url": "/boards/?/copy",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "edit_board",
      "url": "/boards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "subscribe_board",
      "url": "/boards/?/board_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "board_subscriber",
      "url": "/boards/?/board_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_board_activities",
      "url": "/boards/?/activities",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_custom_background",
      "url": "/boards/?/custom_backgrounds",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_list",
      "url": "/boards/?/lists",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "archive_list",
      "url": "/boaards/?/lists/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "delete_list",
      "url": "/boards/?/lists/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "edit_list",
      "url": "/boards/?/lists/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "subscribe_list",
      "url": "/boards/?/lists/?/list_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "unsubscribe_list",
      "url": "/boards/?/lists/?/list_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_archived_lists",
      "url": "/boards/?/archived_lists",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_card",
      "url": "/boards/?/lists/?/cards",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_checklists",
      "url": "/boards/?/lists/?/cards/?/checklists",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_checklist_item",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "archive_card",
      "url": "/boards/?/lists/?/cards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_labels",
      "url": "/boards/?/lists/?/cards/?/labels",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_card_user",
      "url": "/boards/?/lists/?/cards/?/users/?",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_card_activities",
      "url": "/boards/?/lists/?/cards/?/activities",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_checklist_listing",
      "url": "/boards/?/lists/?/cards/?/checklists",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "convert_item_to_card",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items/?/convert_to_card",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "copy_card",
      "url": "/boards/?/lists/?/cards/?/copy",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "delete_card",
      "url": "/boards/?/lists/?/cards/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "delete_checklist",
      "url": "/boards/?/lists/?/cards/?/checklists/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "delete_comment",
      "url": "/boards/?/lists/?/cards/?/comments/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "delete_checklist_item",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "download_attachment_card",
      "url": "/download/?",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "edit_card",
      "url": "/boards/?/lists/?/cards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "edit_checklist",
      "url": "/boards/?/lists/?/cards/?/checklists/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "edit_comment",
      "url": "/boards/?/lists/?/cards/?/comments/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "edit_checklist_item",
      "url": "/boards/?/lists/?/cards/?/checklists/?/items/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "move_list_cards",
      "url": "/boards/?/lists/?/cards/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "comment_card",
      "url": "/boards/?/lists/?/cards/?/comments",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "remove_card_attachment",
      "url": "/boards/?/lists/?/cards/?/attachments/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "delete_card_user",
      "url": "/boards/?/lists/?/cards/?/cards_users/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_card_search",
      "url": "/boards/?/cards/search",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "subscribe_card",
      "url": "/boards/?/lists/?/cards/?/card_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "unsubscribe_card",
      "url": "/boards/?/lists/?/cards/?/card_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "unvote_card",
      "url": "/boards/?/lists/?/cards/?/card_voters/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 2,
      "slug": "add_card_attachment",
      "url": "/boards/?/lists/?/cards/?/attachments",
      "method": "POST"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_archived_cards",
      "url": "/boards/?/archived_cards",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_card_labels",
      "url": "/boards/?/lists/?/cards/?/labels",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "vote_card",
      "url": "/boards/?/lists/?/cards/?/card_voters",
      "method": "POST"
    },
    {
      "board_user_role_id": 3,
      "slug": "view_sync_calendar",
      "url": "/boards/?/sync_calendar",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "subscribe_board",
      "url": "/boards/?/board_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 3,
      "slug": "board_subscriber",
      "url": "/boards/?/board_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 3,
      "slug": "view_board_activities",
      "url": "/boards/?/activities",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "subscribe_list",
      "url": "/boards/?/lists/?/list_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 3,
      "slug": "unsubscribe_list",
      "url": "/boards/?/lists/?/list_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 3,
      "slug": "view_archived_lists",
      "url": "/boards/?/archived_lists",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "view_card_activities",
      "url": "/boards/?/lists/?/cards/?/activities",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "view_checklist_listing",
      "url": "/boards/?/lists/?/cards/?/checklists",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "download_attachment_card",
      "url": "/download/?",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "subscribe_card",
      "url": "/boards/?/lists/?/cards/?/card_subscribers",
      "method": "POST"
    },
    {
      "board_user_role_id": 3,
      "slug": "unsubscribe_card",
      "url": "/boards/?/lists/?/cards/?/card_subscribers/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 3,
      "slug": "view_archived_cards",
      "url": "/boards/?/archived_cards",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "view_card_labels",
      "url": "/boards/?/lists/?/cards/?/labels",
      "method": "GET"
    },
    {
      "board_user_role_id": 3,
      "slug": "vote_card",
      "url": "/boards/?/lists/?/cards/?/card_voters",
      "method": "POST"
    },
    {
      "board_user_role_id": 1,
      "slug": "edit_labels",
      "url": "/labels/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "edit_labels",
      "url": "/labels/?",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "archive_all_cards_in_the_list",
      "url": "/boards/?/lists/?/cards",
      "method": "PUT"
    },
    {
      "board_user_role_id": 2,
      "slug": "archive_all_cards_in_the_list",
      "url": "/boards/?/lists/?/cards",
      "method": "PUT"
    },
    {
      "board_user_role_id": 1,
      "slug": "delete_board",
      "url": "/boards/?",
      "method": "DELETE"
    },
    {
      "board_user_role_id": 1,
      "slug": "get_board_lists",
      "url": "/boards/?/lists",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "get_board_lists",
      "url": "/boards/?/lists",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_card_isting",
      "url": "/boards/?/lists/?/cards/?",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_card_isting",
      "url": "/boards/?/lists/?/cards/?",
      "method": "GET"
    },
    {
      "board_user_role_id": 1,
      "slug": "view_board_label_isting",
      "url": "/boards/?/labels",
      "method": "GET"
    },
    {
      "board_user_role_id": 2,
      "slug": "view_board_label_isting",
      "url": "/boards/?/labels",
      "method": "GET"
    }
  ],
  "board_user_roles": [
    {
      "id": 1,
      "created": "2016-02-22T17:39:17.68",
      "modified": "2016-02-22T17:39:17.68",
      "name": "Owner",
      "description": "Can view and edit cards, remove members, and change settings for the board."
    },
    {
      "id": 2,
      "created": "2016-02-22T17:39:17.68",
      "modified": "2016-02-22T17:39:17.68",
      "name": "Editor",
      "description": "Can view and edit cards, remove members, but not change settings."
    },
    {
      "id": 3,
      "created": "2016-02-22T17:39:17.68",
      "modified": "2016-02-22T17:39:17.68",
      "name": "Viewer",
      "description": "Can view only."
    }
  ]
}

Step 4

Create a simple shell script to convert Restyaboard JSON to Wekan JSON format.

#!/bin/bash
# Convert Restyaboard JSON to Wekan JSON 
# This is only a proof of concept shell script

# Wekan label colors
COLORS=("green" "yellow" "orange" "red" "purple" "blue" "sky" "lime" "pink" "black" "silver" "peachpuff" "crimson" "plum" "darkgreen" "slateblue" "magenta" "gold" "navy" "gray" "saddlebrown" "paleturquoise" "mistyrose" "indigo")
NCOLORS="$((${#COLORS[@]} - 1))"

# usage info
usage(){
  echo "Usage:"
  echo "  $0 -j restyaboard.json" 
  echo ""
  echo "Parameters:"
  echo "  -j restyaboard.json : set Restyaboard JSON board (required)"
  echo ""
}

# parse parameters
while getopts "j:" option; do
  case $option in
    "j")
      param_board_json="${OPTARG}"
      param_board_json_defined=true
      ;;
    \?|:|*)
      usage
      exit
      ;;
  esac
done


if [ "${param_board_json_defined}" = true ]; then
  board_id=$(jq -r '.id' "${param_board_json}")
  board_title=$(jq -r '.name ' "${param_board_json}")


cat << EOF
{
  "_format": "wekan-board-1.0.0",
  "_id": "${board_id}",
  "title": "${board_title}",
  "permission": "private",

  "archived": false,
  "members": [
    {
      "userId": "user",
      "isAdmin": true,
      "isActive": true,
      "isNoComments": false,
      "isCommentOnly": false,
      "isWorker": false
    }
  ],
  "type": "board",
EOF

  last_list_element="$(jq -r '[.lists[].id] | .[-1]' "${param_board_json}")"

  echo '  "lists": ['
  for list_id in $(jq -r .lists[].id "${param_board_json}"); do
    list_name=$(jq -r '.lists[] | select(.id == '${list_id}') | .name' "${param_board_json}")
    list_position=$(jq -r '.lists[] | select(.id == '${list_id}') | .position' "${param_board_json}")
cat << EOF
    {
      "_id": "${list_id}",
      "title": "${list_name}",
      "sort": ${list_position},
      "type": "list"
EOF
    if [ "$last_list_element" == "$list_id" ]; then
      echo "    }"
    else
      echo "    },"
    fi
  done
  echo '  ],'

  # count labels
  label_elements=0
  label_elements_list=""
  for list_id in $(jq -r .lists[].id "${param_board_json}"); do
    list_cards="$(jq -r '.lists[] | select(.id == '${list_id}') | select(.cards != null) | .cards[].id' "${param_board_json}")"
    for card_id in ${list_cards}; do
      card_labels=$(jq -r '.lists[] | select(.id == '${list_id}') | .cards[] | select(.id == '${card_id}') | if (.cards_labels) then .cards_labels[].label_id else empty end' "${param_board_json}")
      label_elements_list="$label_elements_list $card_labels"
    done
  done
  if [ -n "$label_elements_list" ]; then 
    label_elements_list="$(echo $label_elements_list | tr ' ' '\n' | sort -u)"
    label_elements="$(echo $label_elements_list | tr ' ' '\n' | wc -l)"
  fi

  # labels
  labels_seen=""
  echo '  "labels": ['
  label_n=1
  for list_id in $(jq -r .lists[].id "${param_board_json}"); do
    list_cards="$(jq -r '.lists[] | select(.id == '${list_id}') | select(.cards != null) | .cards[].id' "${param_board_json}")"
    if [ -n "${list_cards}" ]; then  
      for card_id in ${list_cards}; do
        list_labels=$(jq -r '.lists[] | select(.id == '${list_id}') | .cards[] | select(.id == '${card_id}') | if (.cards_labels) then .cards_labels[].label_id else empty end' "${param_board_json}")
        for label_id in ${list_labels}; do
          check="$(echo $labels_seen | grep -q -w $label_id; echo $?)"
          if [ "$check" != "0" ]; then
            label_name=$(jq -r '.lists[] | select(.id == '${list_id}') | .cards[] | select(.id == '${card_id}') | .cards_labels[] | select(.label_id == '${label_id}') | .name' "${param_board_json}")
            label_color="${COLORS[$((RANDOM % NCOLORS))]}"
      
cat << EOF
    {
      "_id": "${label_id}",
      "name": "${label_name}",
      "color": "${label_color}"
EOF
            if [ "$label_elements" == "$label_n" ]; then
              echo "    }"
            else
             echo "    },"
            fi
            label_n="$((label_n + 1))"
            labels_seen="$labels_seen $label_id"
          fi
        done
      done
    fi
  done
  echo '  ],'

  # count cards
  card_elements=0
  for list_id in $(jq -r .lists[].id "${param_board_json}"); do
    list_cards="$(jq -r '.lists[] | select(.id == '${list_id}') | select(.cards != null) | [.cards[].id] | length' "${param_board_json}")"
    if [ -n "$list_cards" ]; then 
      card_elements="$((card_elements + list_cards))"
    fi
  done

  # cards
  echo '  "cards": ['
  card_n=1
  for list_id in $(jq -r .lists[].id "${param_board_json}"); do
    list_cards="$(jq -r '.lists[] | select(.id == '${list_id}') | select(.cards != null) | .cards[].id' "${param_board_json}")"
    if [ -n "${list_cards}" ]; then  
      for card_id in ${list_cards}; do
        card_id=$(jq -r '.lists[] | select(.id == '${list_id}') | .cards[] | select(.id == '${card_id}') | .id' "${param_board_json}")
        card_name=$(jq -r '.lists[] | select(.id == '${list_id}') | .cards[] | select(.id == '${card_id}') | .name' "${param_board_json}")
      
cat << EOF
    {
      "_id": "${card_id}",
      "title": "${card_name}",
      "swimlaneId": "swimlane", 
      "listId": "${list_id}",
EOF

        # card labels
        list_labels=$(jq -r '.lists[] | select(.id == '${list_id}') | .cards[] | select(.id == '${card_id}') | if (.cards_labels) then .cards_labels[].label_id else empty end' "${param_board_json}")
        if [ -n "$list_labels" ]; then
          label_elements=$(jq -r '.lists[] | select(.id == '${list_id}') | .cards[] | select(.id == '${card_id}') | .cards_labels | length' "${param_board_json}")
          label_n=1
          echo "      \"labelIds\": ["
          for label_id in ${list_labels}; do
            echo -n "        \"${label_id}\""
            if [ "$label_elements" != "$label_n" ]; then
              echo ","
            else 
              echo
            fi
            label_n="$((label_n + 1))"
          done
          echo "      ]"
        fi

        if [ "$card_elements" == "$card_n" ]; then
          echo "    }"
        else
          echo "    },"
        fi
        card_n="$((card_n + 1))"
      done
    fi
  done
  echo '  ],'


cat << EOF
  "swimlanes": [
    {
      "_id": "swimlane",
      "title": "Default swimlane",
      "archived": false,
      "type": "swimlane",
      "sort": 0
    }
  ],
  "activities": [
  ],
  "customFields": [
  ],
  "comments": [
  ],
  "rules": [],
  "checklists": [
  ],
  "checklistItems": [
  ],
  "subtaskItems": [
  ],
  "triggers": [],
  "actions": [],
  "attachments": [],
  "users": [
    {
      "_id": "user",
      "username": "user",
      "profile": {}
    }
  ]
}
EOF

else
  usage
fi

Step 5

Convert Restya board JSON file.

$ bash restya_to_wekan.sh -j 4.sjon

It will create the following output.

{
  "_format": "wekan-board-1.0.0",
  "_id": "4",
  "title": "ToDo",
  "permission": "private",
  "archived": false,
  "members": [
    {
      "userId": "user",
      "isAdmin": true,
      "isActive": true,
      "isNoComments": false,
      "isCommentOnly": false,
      "isWorker": false
    }
  ],
  "type": "board",
  "lists": [
    {
      "_id": "201",
      "title": "Todo",
      "sort": 1,
      "type": "list"
    },
    {
      "_id": "202",
      "title": "Todo - This Week",
      "sort": 2,
      "type": "list"
    },
    {
      "_id": "203",
      "title": "Doing - Today",
      "sort": 3,
      "type": "list"
    },
    {
      "_id": "204",
      "title": "Done",
      "sort": 4,
      "type": "list"
    }
  ],
  "labels": [
    {
      "_id": "2",
      "name": "Wekan",
      "color": "orange"
    },
    {
      "_id": "3",
      "name": "Blog",
      "color": "silver"
    },
    {
      "_id": "4",
      "name": "GitHub",
      "color": "navy"
    }
  ],
  "cards": [
    {
      "_id": "4",
      "title": "Add labels for Wekan import shell script",
      "swimlaneId": "swimlane",
      "listId": "202",
      "labelIds": [
        "2"
      ]
    },
    {
      "_id": "5",
      "title": "Create blog post about Wekan import shell script",
      "swimlaneId": "swimlane",
      "listId": "202",
      "labelIds": [
        "2",
        "3"
      ]
    },
    {
      "_id": "3",
      "title": "Fix Wekan import shell script",
      "swimlaneId": "swimlane",
      "listId": "203",
      "labelIds": [
        "2"
      ]
    },
    {
      "_id": "2",
      "title": "Create proof of concept shell script to convert Restyaboard JSON to Wekan JSON format",
      "swimlaneId": "swimlane",
      "listId": "204",
      "labelIds": [
        "2",
        "4"
      ]
    }
  ],
  "swimlanes": [
    {
      "_id": "swimlane",
      "title": "Default swimlane",
      "archived": false,
      "type": "swimlane",
      "sort": 0
    }
  ],
  "activities": [
  ],
  "customFields": [
  ],
  "comments": [
  ],
  "rules": [],
  "checklists": [
  ],
  "checklistItems": [
  ],
  "subtaskItems": [
  ],
  "triggers": [],
  "actions": [],
  "attachments": [],
  "users": [
    {
      "_id": "user",
      "username": "user",
      "profile": {}
    }
  ]
}
Label colors are chosen randomly.

Step 6

Import it to the Wekan.

Wekan

Additional notes

This is a simple proof of concept. Please read Importing JSON from Restyaboard #3181 for more details.