From 2de07cc441e8e37433ada1353b56506d2ac01728 Mon Sep 17 00:00:00 2001 From: raphael-goetz Date: Tue, 18 Nov 2025 17:30:39 +0100 Subject: [PATCH 1/9] feat: added Cron Definitions --- .../data_type/object/cron_code.proto.json | 60 +++++++++++++++++++ .../type/cron_day_of_month.proto.json | 18 ++++++ .../type/cron_day_of_week.proto.json | 18 ++++++ .../cron/data_type/type/cron_hour.proto.json | 18 ++++++ .../data_type/type/cron_minute.proto.json | 18 ++++++ .../cron/data_type/type/cron_month.proto.json | 18 ++++++ definitions/cron/flow_type/cron.proto.json | 42 +++++++++++++ 7 files changed, 192 insertions(+) create mode 100644 definitions/cron/data_type/object/cron_code.proto.json create mode 100644 definitions/cron/data_type/type/cron_day_of_month.proto.json create mode 100644 definitions/cron/data_type/type/cron_day_of_week.proto.json create mode 100644 definitions/cron/data_type/type/cron_hour.proto.json create mode 100644 definitions/cron/data_type/type/cron_minute.proto.json create mode 100644 definitions/cron/data_type/type/cron_month.proto.json create mode 100644 definitions/cron/flow_type/cron.proto.json diff --git a/definitions/cron/data_type/object/cron_code.proto.json b/definitions/cron/data_type/object/cron_code.proto.json new file mode 100644 index 0000000..77be423 --- /dev/null +++ b/definitions/cron/data_type/object/cron_code.proto.json @@ -0,0 +1,60 @@ +{ + "variant": "OBJECT", + "identifier": "CRON_CODE", + "name": [ + { + "code": "en-US", + "content": "Cron Code" + } + ], + "rules": [ + { + "containsKey": { + "key": "minute", + "dataTypeIdentifier": { + "dataTypeIdentifier": "CRON_MINUTE" + } + } + }, + { + "containsKey": { + "key": "hour", + "dataTypeIdentifier": { + "dataTypeIdentifier": "CRON_HOUR" + } + } + }, + { + "containsKey": { + "key": "day_of_month", + "dataTypeIdentifier": { + "dataTypeIdentifier": "CRON_DAY_OF_MONTH" + } + } + }, + { + "containsKey": { + "key": "month", + "dataTypeIdentifier": { + "dataTypeIdentifier": "CRON_MONTH" + } + } + }, + { + "containsKey": { + "key": "day_of_week", + "dataTypeIdentifier": { + "dataTypeIdentifier": "CRON_DAY_OF_WEEK" + } + } + }, + { + "parentType": { + "parentType": { + "dataTypeIdentifier": "OBJECT" + } + } + } + ], + "genericKeys": [] +} \ No newline at end of file diff --git a/definitions/cron/data_type/type/cron_day_of_month.proto.json b/definitions/cron/data_type/type/cron_day_of_month.proto.json new file mode 100644 index 0000000..0da2cbf --- /dev/null +++ b/definitions/cron/data_type/type/cron_day_of_month.proto.json @@ -0,0 +1,18 @@ +{ + "variant": "TYPE", + "identifier": "CRON_DAY_OF_MONTH", + "name": [ + { + "code": "en-US", + "content": "Cron Day of Month" + } + ], + "rules": [ + { + "regex": { + "pattern": "^(\\*|([1-9]|[12]\\d|3[01])(-([1-9]|[12]\\d|3[01]))?)(\\/([1-9]|[12]\\d|3[01]))?(,(\\*|([1-9]|[12]\\d|3[01])(-([1-9]|[12]\\d|3[01]))?)(\\/([1-9]|[12]\\d|3[01]))?)*$" + } + } + ], + "genericKeys": [] +} \ No newline at end of file diff --git a/definitions/cron/data_type/type/cron_day_of_week.proto.json b/definitions/cron/data_type/type/cron_day_of_week.proto.json new file mode 100644 index 0000000..a3801cd --- /dev/null +++ b/definitions/cron/data_type/type/cron_day_of_week.proto.json @@ -0,0 +1,18 @@ +{ + "variant": "TYPE", + "identifier": "CRON_DAY_OF_WEEK", + "name": [ + { + "code": "en-US", + "content": "Cron Day of Week" + } + ], + "rules": [ + { + "regex": { + "pattern": "^(\\*|([0-7])(-([0-7]))?)(\\/([0-7]))?(,(\\*|([0-7])(-([0-7]))?)(\\/([0-7]))?)*$" + } + } + ], + "genericKeys": [] +} \ No newline at end of file diff --git a/definitions/cron/data_type/type/cron_hour.proto.json b/definitions/cron/data_type/type/cron_hour.proto.json new file mode 100644 index 0000000..9f661f5 --- /dev/null +++ b/definitions/cron/data_type/type/cron_hour.proto.json @@ -0,0 +1,18 @@ +{ + "variant": "TYPE", + "identifier": "CRON_HOUR", + "name": [ + { + "code": "en-US", + "content": "Cron Hour" + } + ], + "rules": [ + { + "regex": { + "pattern": "^(\\*|([01]?\\d|2[0-3])(-([01]?\\d|2[0-3]))?)(\\/([01]?\\d|2[0-3]))?(,(\\*|([01]?\\d|2[0-3])(-([01]?\\d|2[0-3]))?)(\\/([01]?\\d|2[0-3]))?)*$" + } + } + ], + "genericKeys": [] +} \ No newline at end of file diff --git a/definitions/cron/data_type/type/cron_minute.proto.json b/definitions/cron/data_type/type/cron_minute.proto.json new file mode 100644 index 0000000..b10e1bc --- /dev/null +++ b/definitions/cron/data_type/type/cron_minute.proto.json @@ -0,0 +1,18 @@ +{ + "variant": "TYPE", + "identifier": "CRON_MINUTE", + "name": [ + { + "code": "en-US", + "content": "Cron Minute" + } + ], + "rules": [ + { + "regex": { + "pattern": "^(\\*|([0-5]?\\d)(-[0-5]?\\d)?)(\\/[0-5]?\\d)?(,(\\*|([0-5]?\\d)(-[0-5]?\\d)?)(\\/[0-5]?\\d)?)*$" + } + } + ], + "genericKeys": [] +} \ No newline at end of file diff --git a/definitions/cron/data_type/type/cron_month.proto.json b/definitions/cron/data_type/type/cron_month.proto.json new file mode 100644 index 0000000..696c83a --- /dev/null +++ b/definitions/cron/data_type/type/cron_month.proto.json @@ -0,0 +1,18 @@ +{ + "variant": "TYPE", + "identifier": "CRON_MONTH", + "name": [ + { + "code": "en-US", + "content": "Cron Month" + } + ], + "rules": [ + { + "regex": { + "pattern": "^(\\*|(0?[1-9]|1[0-2])(-(0?[1-9]|1[0-2]))?)(\\/(0?[1-9]|1[0-2]))?(,(\\*|(0?[1-9]|1[0-2])(-(0?[1-9]|1[0-2]))?)(\\/(0?[1-9]|1[0-2]))?)*$" + } + } + ], + "genericKeys": [] +} \ No newline at end of file diff --git a/definitions/cron/flow_type/cron.proto.json b/definitions/cron/flow_type/cron.proto.json new file mode 100644 index 0000000..58879f4 --- /dev/null +++ b/definitions/cron/flow_type/cron.proto.json @@ -0,0 +1,42 @@ +{ + "identifier": "CRON", + "settings": [ + { + "identifier": "CRON_CODE", + "unique": false, + "dataTypeIdentifier": "CRON_CODE", + "defaultValue": null, + "name": [ + { + "code": "en-US", + "content": "Cron Code" + } + ], + "description": [ + { + "code": "en-US", + "content": "Specifies the Cron Code for this flow to be called." + } + ] + } + ], + "editable": false, + "name": [ + { + "code": "en-US", + "content": "Cron Job" + } + ], + "description": [ + { + "code": "en-US", + "content": "A Cron Job is a scheduled task that runs automatically at specified intervals, typically defined using cron expressions. It is commonly used to automate repetitive operations such as data processing, system maintenance, and periodic updates without requiring manual execution." + } + ], + "documentation": [ + { + "code": "en-US", + "content": "A Cron Job is a time-based task scheduler that executes commands or scripts at predefined intervals, specified using cron expressions. These expressions control the exact timing of execution—for example, running a task every minute, daily at midnight, or on specific days of the week. Cron Jobs are widely used to automate routine processes such as backups, log rotation, data synchronization, and other recurring system or application tasks." + } + ] +} \ No newline at end of file From 4f87044f6b322822660e1239fc2c4288cf7e154c Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 8 Jan 2026 10:25:12 +0100 Subject: [PATCH 2/9] feat: updated cron definitions to latest types --- .../data_type/object/cron_code.proto.json | 9 +-- definitions/cron/flow_type/cron.proto.json | 77 +++++++++---------- 2 files changed, 37 insertions(+), 49 deletions(-) diff --git a/definitions/cron/data_type/object/cron_code.proto.json b/definitions/cron/data_type/object/cron_code.proto.json index 77be423..1c2ccef 100644 --- a/definitions/cron/data_type/object/cron_code.proto.json +++ b/definitions/cron/data_type/object/cron_code.proto.json @@ -47,14 +47,7 @@ "dataTypeIdentifier": "CRON_DAY_OF_WEEK" } } - }, - { - "parentType": { - "parentType": { - "dataTypeIdentifier": "OBJECT" - } - } } ], "genericKeys": [] -} \ No newline at end of file +} diff --git a/definitions/cron/flow_type/cron.proto.json b/definitions/cron/flow_type/cron.proto.json index 58879f4..a5bf28f 100644 --- a/definitions/cron/flow_type/cron.proto.json +++ b/definitions/cron/flow_type/cron.proto.json @@ -1,42 +1,37 @@ { - "identifier": "CRON", - "settings": [ - { - "identifier": "CRON_CODE", - "unique": false, - "dataTypeIdentifier": "CRON_CODE", - "defaultValue": null, - "name": [ - { - "code": "en-US", - "content": "Cron Code" - } - ], - "description": [ - { - "code": "en-US", - "content": "Specifies the Cron Code for this flow to be called." - } - ] - } - ], - "editable": false, - "name": [ - { - "code": "en-US", - "content": "Cron Job" - } - ], - "description": [ - { - "code": "en-US", - "content": "A Cron Job is a scheduled task that runs automatically at specified intervals, typically defined using cron expressions. It is commonly used to automate repetitive operations such as data processing, system maintenance, and periodic updates without requiring manual execution." - } - ], - "documentation": [ - { - "code": "en-US", - "content": "A Cron Job is a time-based task scheduler that executes commands or scripts at predefined intervals, specified using cron expressions. These expressions control the exact timing of execution—for example, running a task every minute, daily at midnight, or on specific days of the week. Cron Jobs are widely used to automate routine processes such as backups, log rotation, data synchronization, and other recurring system or application tasks." - } - ] -} \ No newline at end of file + "identifier": "CRON", + "settings": [ + { + "identifier": "CRON_CODE", + "unique": "NONE", + "dataTypeIdentifier": "CRON_CODE", + "defaultValue": null, + "name": [ + { + "code": "en-US", + "content": "Cron Code" + } + ], + "description": [ + { + "code": "en-US", + "content": "Specifies the Cron Code for this flow to be called." + } + ] + } + ], + "name": [ + { + "code": "en-US", + "content": "Cron Job" + } + ], + "description": [ + { + "code": "en-US", + "content": "A Cron Job is a scheduled task that runs automatically at specified intervals, typically defined using cron expressions. It is commonly used to automate repetitive operations such as data processing, system maintenance, and periodic updates without requiring manual execution." + } + ], + "documentation": [], + "displayIcon": "tabler:file-time" +} From 78903125fe151e97c1b043d7ae1503846444d087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20G=C3=B6tz?= <52959657+raphael-goetz@users.noreply.github.com> Date: Thu, 8 Jan 2026 10:52:16 +0100 Subject: [PATCH 3/9] Update definitions/cron/data_type/object/cron_code.proto.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raphael Götz <52959657+raphael-goetz@users.noreply.github.com> --- .../cron/data_type/object/cron_code.proto.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/definitions/cron/data_type/object/cron_code.proto.json b/definitions/cron/data_type/object/cron_code.proto.json index 1c2ccef..4685838 100644 --- a/definitions/cron/data_type/object/cron_code.proto.json +++ b/definitions/cron/data_type/object/cron_code.proto.json @@ -7,6 +7,18 @@ "content": "Cron Code" } ], + "alias": [ + { + "code": "en-US", + "content": "cron;code;schedule" + } + ], + "displayMessage": [ + { + "code": "en-US", + "content": "Cron Code" + } + ], "rules": [ { "containsKey": { From cef1717e8ae2b00e34dfcb1678f945e144d4b8b1 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 8 Jan 2026 12:17:51 +0100 Subject: [PATCH 4/9] feat: added alias and displayMessage --- .../cron/data_type/object/cron_code.proto.json | 4 ++-- .../data_type/type/cron_day_of_month.proto.json | 16 ++++++++++++++-- .../data_type/type/cron_day_of_week.proto.json | 16 ++++++++++++++-- .../cron/data_type/type/cron_hour.proto.json | 16 ++++++++++++++-- .../cron/data_type/type/cron_minute.proto.json | 16 ++++++++++++++-- .../cron/data_type/type/cron_month.proto.json | 16 ++++++++++++++-- definitions/cron/flow_type/cron.proto.json | 14 +++++++++++++- 7 files changed, 85 insertions(+), 13 deletions(-) diff --git a/definitions/cron/data_type/object/cron_code.proto.json b/definitions/cron/data_type/object/cron_code.proto.json index 4685838..095bfb2 100644 --- a/definitions/cron/data_type/object/cron_code.proto.json +++ b/definitions/cron/data_type/object/cron_code.proto.json @@ -10,13 +10,13 @@ "alias": [ { "code": "en-US", - "content": "cron;code;schedule" + "content": "cron;code;schedule;timer;clock" } ], "displayMessage": [ { "code": "en-US", - "content": "Cron Code" + "content": "Cron Code ${minute} ${hour} ${day_of_month} ${month} ${day_of_week}" } ], "rules": [ diff --git a/definitions/cron/data_type/type/cron_day_of_month.proto.json b/definitions/cron/data_type/type/cron_day_of_month.proto.json index 0da2cbf..a2a839e 100644 --- a/definitions/cron/data_type/type/cron_day_of_month.proto.json +++ b/definitions/cron/data_type/type/cron_day_of_month.proto.json @@ -14,5 +14,17 @@ } } ], - "genericKeys": [] -} \ No newline at end of file + "alias": [ + { + "code": "en-US", + "content": "cron;code;schedule;timer;clock;month;day" + } + ], + "displayMessage": [ + { + "code": "en-US", + "content": "Cron Day of Month" + } + ], + "genericKeys": [] +} diff --git a/definitions/cron/data_type/type/cron_day_of_week.proto.json b/definitions/cron/data_type/type/cron_day_of_week.proto.json index a3801cd..684a793 100644 --- a/definitions/cron/data_type/type/cron_day_of_week.proto.json +++ b/definitions/cron/data_type/type/cron_day_of_week.proto.json @@ -14,5 +14,17 @@ } } ], - "genericKeys": [] -} \ No newline at end of file + "alias": [ + { + "code": "en-US", + "content": "cron;code;schedule;timer;clock;day;week" + } + ], + "displayMessage": [ + { + "code": "en-US", + "content": "Cron Day of Week" + } + ], + "genericKeys": [] +} diff --git a/definitions/cron/data_type/type/cron_hour.proto.json b/definitions/cron/data_type/type/cron_hour.proto.json index 9f661f5..5b475e3 100644 --- a/definitions/cron/data_type/type/cron_hour.proto.json +++ b/definitions/cron/data_type/type/cron_hour.proto.json @@ -14,5 +14,17 @@ } } ], - "genericKeys": [] -} \ No newline at end of file + "alias": [ + { + "code": "en-US", + "content": "cron;code;schedule;timer;clock;hour" + } + ], + "displayMessage": [ + { + "code": "en-US", + "content": "Cron Hour" + } + ], + "genericKeys": [] +} diff --git a/definitions/cron/data_type/type/cron_minute.proto.json b/definitions/cron/data_type/type/cron_minute.proto.json index b10e1bc..b635730 100644 --- a/definitions/cron/data_type/type/cron_minute.proto.json +++ b/definitions/cron/data_type/type/cron_minute.proto.json @@ -14,5 +14,17 @@ } } ], - "genericKeys": [] -} \ No newline at end of file + "alias": [ + { + "code": "en-US", + "content": "cron;code;schedule;timer;clock;minute" + } + ], + "displayMessage": [ + { + "code": "en-US", + "content": "Cron Minute" + } + ], + "genericKeys": [] +} diff --git a/definitions/cron/data_type/type/cron_month.proto.json b/definitions/cron/data_type/type/cron_month.proto.json index 696c83a..d41434c 100644 --- a/definitions/cron/data_type/type/cron_month.proto.json +++ b/definitions/cron/data_type/type/cron_month.proto.json @@ -14,5 +14,17 @@ } } ], - "genericKeys": [] -} \ No newline at end of file + "alias": [ + { + "code": "en-US", + "content": "cron;code;schedule;timer;clock;month" + } + ], + "displayMessage": [ + { + "code": "en-US", + "content": "Cron Month" + } + ], + "genericKeys": [] +} diff --git a/definitions/cron/flow_type/cron.proto.json b/definitions/cron/flow_type/cron.proto.json index a5bf28f..460af57 100644 --- a/definitions/cron/flow_type/cron.proto.json +++ b/definitions/cron/flow_type/cron.proto.json @@ -33,5 +33,17 @@ } ], "documentation": [], - "displayIcon": "tabler:file-time" + "displayIcon": "tabler:file-time", + "alias": [ + { + "code": "en-US", + "content": "cron;code;schedule;timer;clock;flow" + } + ], + "displayMessage": [ + { + "code": "en-US", + "content": "Schedule Job ${cron_code}" + } + ] } From ff27c77e2294caf92a0e71b7dd4558c7d4758498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20G=C3=B6tz?= <52959657+raphael-goetz@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:30:29 +0100 Subject: [PATCH 5/9] Update definitions/cron/data_type/type/cron_hour.proto.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raphael Götz <52959657+raphael-goetz@users.noreply.github.com> --- definitions/cron/data_type/type/cron_hour.proto.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/cron/data_type/type/cron_hour.proto.json b/definitions/cron/data_type/type/cron_hour.proto.json index 5b475e3..61efd71 100644 --- a/definitions/cron/data_type/type/cron_hour.proto.json +++ b/definitions/cron/data_type/type/cron_hour.proto.json @@ -26,5 +26,5 @@ "content": "Cron Hour" } ], - "genericKeys": [] + "genericKeys": [] } From 4e34f37f7eb2d6506940b3d860820bde1ce87b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20G=C3=B6tz?= <52959657+raphael-goetz@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:30:40 +0100 Subject: [PATCH 6/9] Update definitions/cron/data_type/type/cron_day_of_month.proto.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raphael Götz <52959657+raphael-goetz@users.noreply.github.com> --- definitions/cron/data_type/type/cron_day_of_month.proto.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/cron/data_type/type/cron_day_of_month.proto.json b/definitions/cron/data_type/type/cron_day_of_month.proto.json index a2a839e..3580b96 100644 --- a/definitions/cron/data_type/type/cron_day_of_month.proto.json +++ b/definitions/cron/data_type/type/cron_day_of_month.proto.json @@ -26,5 +26,5 @@ "content": "Cron Day of Month" } ], - "genericKeys": [] + "genericKeys": [] } From c5cd920b3bfbca523ebd229f044e3f15d5877d59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20G=C3=B6tz?= <52959657+raphael-goetz@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:31:21 +0100 Subject: [PATCH 7/9] Update definitions/cron/data_type/type/cron_minute.proto.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raphael Götz <52959657+raphael-goetz@users.noreply.github.com> --- definitions/cron/data_type/type/cron_minute.proto.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/cron/data_type/type/cron_minute.proto.json b/definitions/cron/data_type/type/cron_minute.proto.json index b635730..1ee6305 100644 --- a/definitions/cron/data_type/type/cron_minute.proto.json +++ b/definitions/cron/data_type/type/cron_minute.proto.json @@ -26,5 +26,5 @@ "content": "Cron Minute" } ], - "genericKeys": [] + "genericKeys": [] } From 38a8f9e0c858dcaf56ca63ede0bff29743b706ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20G=C3=B6tz?= <52959657+raphael-goetz@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:31:43 +0100 Subject: [PATCH 8/9] Update definitions/cron/data_type/type/cron_month.proto.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raphael Götz <52959657+raphael-goetz@users.noreply.github.com> --- definitions/cron/data_type/type/cron_month.proto.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/cron/data_type/type/cron_month.proto.json b/definitions/cron/data_type/type/cron_month.proto.json index d41434c..8bfa49f 100644 --- a/definitions/cron/data_type/type/cron_month.proto.json +++ b/definitions/cron/data_type/type/cron_month.proto.json @@ -26,5 +26,5 @@ "content": "Cron Month" } ], - "genericKeys": [] + "genericKeys": [] } From 0e806c090745bdea6e511bb6a4b7358903a2bb86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raphael=20G=C3=B6tz?= <52959657+raphael-goetz@users.noreply.github.com> Date: Thu, 8 Jan 2026 12:32:09 +0100 Subject: [PATCH 9/9] Update definitions/cron/data_type/type/cron_day_of_week.proto.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Raphael Götz <52959657+raphael-goetz@users.noreply.github.com> --- definitions/cron/data_type/type/cron_day_of_week.proto.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/definitions/cron/data_type/type/cron_day_of_week.proto.json b/definitions/cron/data_type/type/cron_day_of_week.proto.json index 684a793..d5e55e0 100644 --- a/definitions/cron/data_type/type/cron_day_of_week.proto.json +++ b/definitions/cron/data_type/type/cron_day_of_week.proto.json @@ -26,5 +26,5 @@ "content": "Cron Day of Week" } ], - "genericKeys": [] + "genericKeys": [] }