diff --git a/bulk-api/schema/bulk-api-test.schema.json b/bulk-api/schema/bulk-api-test.schema.json new file mode 100644 index 0000000..8609bb4 --- /dev/null +++ b/bulk-api/schema/bulk-api-test.schema.json @@ -0,0 +1,258 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://lionweb.io/lionweb-integration-testing/bulk-api/request.schema.json", + "title": "LionWeb Integration Testing Bulk API Request", + "type": "object", + "properties": { + "request": { + "type": "object", + "properties": { + "clientId": { + "description": "unique client id", + "$ref": "#/$defs/id" + }, + "command": { + "type": "object", + "properties": { + "listPartitions": { + "description": "List available partitions", + "type": "object", + "properties": { + }, + "additionalProperties": false, + "maxProperties": 0 + }, + "createPartitions": { + "description": "Create new partitions", + "type": "object", + "properties": { + "chunk": { + "description": "SerializationChunk containing all nodes we want to add as new partitions", + "$ref": "#/$defs/serializationChunk" + } + }, + "additionalProperties": false, + "required": [ + "chunk" + ] + }, + "deletePartitions": { + "description": "Delete partitions and all their contents", + "type": "object", + "properties": { + "nodeIds": { + "description": "List of node ids to delete", + "type": "array", + "items": { + "$ref": "#/$defs/idVariable" + } + } + }, + "additionalProperties": false, + "required": [ + "nodeIds" + ] + }, + "retrieve": { + "description": "Get nodes from repository", + "type": "object", + "properties": { + "nodeIds": { + "description": "List of node ids we want to retrieve from the repository", + "type": "array", + "items": { + "$ref": "#/$defs/idVariable" + } + }, + "depthLimit": { + "description": "Limit the depth of retrieved subtrees", + "$ref": "#/$defs/numberString" + } + }, + "additionalProperties": false, + "required": [ + "nodeIds" + ] + }, + "store": { + "description": "Put nodes into repository", + "type": "object", + "properties": { + "chunk": { + "description": "SerializationChunk containing all nodes to store to the repository", + "$ref": "#/$defs/serializationChunk" + } + }, + "additionalProperties": false, + "required": [ + "chunk" + ] + }, + "ids": { + "description": "Get available ids", + "type": "object", + "properties": { + "count": { + "description": "Number of ids requested", + "$ref": "#/$defs/numberString" + } + }, + "additionalProperties": false, + "required": [ + "count" + ] + } + }, + "minProperties": 1, + "maxProperties": 1 + } + }, + "required": [ + "clientId", + "command" + ], + "additionalProperties": false, + "minProperties": 2, + "maxProperties": 2 + }, + "response": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + }, + "command": { + "type": "object", + "properties": { + "listPartitions": { + "description": "List available partitions", + "type": "object", + "properties": { + "chunk": { + "description": "SerializationChunk with all accessible Partitions in the Repository", + "$ref": "#/$defs/serializationChunk" + } + }, + "additionalProperties": false, + "required": [ + "chunk" + ] + }, + "createPartitions": { + "description": "Create new partitions", + "type": "object", + "properties": { + }, + "additionalProperties": false, + "maxProperties": 0 + }, + "deletePartitions": { + "description": "Delete partitions and all their contents", + "type": "object", + "properties": { + }, + "additionalProperties": false, + "maxProperties": 0 + }, + "retrieve": { + "description": "Get nodes from repository", + "type": "object", + "properties": { + "chunk": { + "description": "SerializationChunk containing all nodes according to nodeIds and depthLimit parameters", + "$ref": "#/$defs/serializationChunk" + } + }, + "additionalProperties": false, + "required": [ + "chunk" + ] + }, + "store": { + "description": "Put nodes into repository", + "type": "object", + "properties": { + }, + "additionalProperties": false, + "maxProperties": 0 + }, + "ids": { + "description": "Get available ids", + "type": "object", + "properties": { + "nodeIds": { + "description": "List of ids guaranteed to be free", + "type": "array" + }, + "items": { + "$ref": "#/$defs/idVariable" + } + }, + "additionalProperties": false, + "required": [ + "nodeIds" + ] + } + }, + "minProperties": 1, + "maxProperties": 1 + }, + "messages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kind": { + "type": "string", + "$ref": "#/$defs/id" + }, + "data": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "propertyNames": { + "$ref": "#/$defs/id" + } + } + }, + "additionalProperties": false, + "required": [ + "kind" + ] + } + } + }, + "required": [ + "success", + "command", + "messages" + ], + "additionalProperties": false, + "minProperties": 3, + "maxProperties": 3 + } + }, + "additionalProperties": false, + "required": ["request","response"], + "minProperties": 2, + "maxProperties": 2, + "$defs": { + "serializationChunk": { + "$ref": "./serialization.schema.json" + }, + "id": { + "$ref": "./serialization.schema.json#/$defs/id" + }, + "idVariable": { + "description": "node id or variable", + "type": "string", + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$|^\\$[a-zA-Z0-9_-]$" + }, + "numberString": { + "type": "string", + "pattern": "^[0-9]+" + } + } +} diff --git a/bulk-api/schema/serialization.schema.json b/bulk-api/schema/serialization.schema.json new file mode 100644 index 0000000..44f7459 --- /dev/null +++ b/bulk-api/schema/serialization.schema.json @@ -0,0 +1,228 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://lionweb.io/serialization.schema.json", + "title": "LionWeb Serialization", + "type": "object", + "properties": { + "serializationFormatVersion": { + "type": "string", + "pattern": "^\\S+(.*\\S)?$" + }, + "languages": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "$ref": "#/$defs/key" + }, + "version": { + "$ref": "#/$defs/version" + } + }, + "required": [ + "key", + "version" + ], + "additionalProperties": false, + "minProperties": 2, + "maxProperties": 2 + }, + "uniqueItems": true + }, + "nodes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "$ref": "#/$defs/id" + }, + "classifier": { + "$ref": "#/$defs/metaPointer" + }, + "properties": { + "type": "array", + "items": { + "type": "object", + "properties": { + "property": { + "$ref": "#/$defs/metaPointer" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "property", + "value" + ], + "additionalProperties": false, + "minProperties": 2, + "maxProperties": 2 + } + }, + "containments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "containment": { + "$ref": "#/$defs/metaPointer" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/$defs/id" + }, + "uniqueItems": true + } + }, + "required": [ + "containment", + "children" + ], + "additionalProperties": false, + "minProperties": 2, + "maxProperties": 2 + } + }, + "references": { + "type": "array", + "items": { + "type": "object", + "properties": { + "reference": { + "$ref": "#/$defs/metaPointer" + }, + "targets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "resolveInfo": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "reference": { + "oneOf": [ + { + "$ref": "#/$defs/id" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "resolveInfo", + "reference" + ], + "additionalProperties": false, + "minProperties": 2, + "maxProperties": 2 + } + } + }, + "required": [ + "reference", + "targets" + ], + "additionalProperties": false, + "minProperties": 2, + "maxProperties": 2 + } + }, + "annotations": { + "type": "array", + "items": { + "$ref": "#/$defs/id" + }, + "uniqueItems": true + }, + "parent": { + "oneOf": [ + { + "$ref": "#/$defs/id" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "classifier", + "properties", + "containments", + "references", + "annotations", + "parent" + ], + "additionalProperties": false, + "minProperties": 7, + "maxProperties": 7 + }, + "uniqueItems": true + } + }, + "required": [ + "serializationFormatVersion", + "languages", + "nodes" + ], + "additionalProperties": false, + "minProperties": 3, + "maxProperties": 3, + "$defs": { + "id": { + "type": "string", + "minLength": 1, + "pattern": "^[a-zA-Z0-9_-]+$" + }, + "key": { + "$ref": "#/$defs/id" + }, + "version": { + "type": "string", + "minLength": 1 + }, + "metaPointer": { + "type": "object", + "properties": { + "language": { + "$ref": "#/$defs/key" + }, + "version": { + "$ref": "#/$defs/version" + }, + "key": { + "$ref": "#/$defs/key" + } + }, + "required": [ + "language", + "version", + "key" + ], + "additionalProperties": false, + "minProperties": 3, + "maxProperties": 3 + } + } +} diff --git a/bulk-api/testset/createPartitions/simple/single/0-createSinglePartition.json b/bulk-api/testset/createPartitions/simple/single/0-createSinglePartition.json new file mode 100644 index 0000000..84d3d21 --- /dev/null +++ b/bulk-api/testset/createPartitions/simple/single/0-createSinglePartition.json @@ -0,0 +1,55 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "createPartitions": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "ID-2", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [], + "references": [], + "annotations": [], + "parent": null + } + ] + } + } + } + }, + "response": { + "success": true, + "command": { + "createPartitions": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/deletePartitions/simple/single/0-createPartition.json b/bulk-api/testset/deletePartitions/simple/single/0-createPartition.json new file mode 100644 index 0000000..84d3d21 --- /dev/null +++ b/bulk-api/testset/deletePartitions/simple/single/0-createPartition.json @@ -0,0 +1,55 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "createPartitions": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "ID-2", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [], + "references": [], + "annotations": [], + "parent": null + } + ] + } + } + } + }, + "response": { + "success": true, + "command": { + "createPartitions": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/deletePartitions/simple/single/1-deleteSinglePartition.json b/bulk-api/testset/deletePartitions/simple/single/1-deleteSinglePartition.json new file mode 100644 index 0000000..8ac141e --- /dev/null +++ b/bulk-api/testset/deletePartitions/simple/single/1-deleteSinglePartition.json @@ -0,0 +1,21 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "deletePartitions": { + "nodeIds": [ + "ID-2" + ] + } + } + }, + "response": { + "success": true, + "command": { + "deletePartitions": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/flow/happy/0-ids.json b/bulk-api/testset/flow/happy/0-ids.json new file mode 100644 index 0000000..3ca92d8 --- /dev/null +++ b/bulk-api/testset/flow/happy/0-ids.json @@ -0,0 +1,23 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "ids": { + "count": "2" + } + } + }, + "response": { + "success": true, + "command": { + "ids": { + "nodeIds": [ + "$first", + "$second" + ] + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/flow/happy/1-createPartition.json b/bulk-api/testset/flow/happy/1-createPartition.json new file mode 100644 index 0000000..dd75b6a --- /dev/null +++ b/bulk-api/testset/flow/happy/1-createPartition.json @@ -0,0 +1,55 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "createPartitions": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "$first", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [], + "references": [], + "annotations": [], + "parent": null + } + ] + } + } + } + }, + "response": { + "success": true, + "command": { + "createPartitions": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/flow/happy/2-store.json b/bulk-api/testset/flow/happy/2-store.json new file mode 100644 index 0000000..de3dfb7 --- /dev/null +++ b/bulk-api/testset/flow/happy/2-store.json @@ -0,0 +1,97 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "store": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "$first", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [ + { + "containment": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-root-key" + }, + "children": [ + "$second" + ] + } + ], + "references": [], + "annotations": [], + "parent": null + }, + { + "id": "$second", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Folder-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "root" + } + ], + "containments": [ + { + "containment": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Folder-listing-key" + }, + "children": [] + } + ], + "references": [], + "annotations": [], + "parent": "$first" + } + ] + } + } + } + }, + "response": { + "success": true, + "command": { + "store": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/flow/happy/3-listPartitions.json b/bulk-api/testset/flow/happy/3-listPartitions.json new file mode 100644 index 0000000..a9361c4 --- /dev/null +++ b/bulk-api/testset/flow/happy/3-listPartitions.json @@ -0,0 +1,66 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "listPartitions": { + } + } + }, + "response": { + "success": true, + "command": { + "listPartitions": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "$first", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [ + { + "containment": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-root-key" + }, + "children": [ + "$second" + ] + } + ], + "references": [], + "annotations": [], + "parent": null + } + ] + } + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/flow/happy/4-retrieve.json b/bulk-api/testset/flow/happy/4-retrieve.json new file mode 100644 index 0000000..2068fb2 --- /dev/null +++ b/bulk-api/testset/flow/happy/4-retrieve.json @@ -0,0 +1,100 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "retrieve": { + "nodeIds": [ + "$first" + ] + } + } + }, + "response": { + "success": true, + "command": { + "retrieve": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "$first", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [ + { + "containment": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-root-key" + }, + "children": [ + "$second" + ] + } + ], + "references": [], + "annotations": [], + "parent": null + }, + { + "id": "$second", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Folder-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "root" + } + ], + "containments": [ + { + "containment": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Folder-listing-key" + }, + "children": [] + } + ], + "references": [], + "annotations": [], + "parent": "$first" + } + ] + } + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/flow/happy/5-delete.json b/bulk-api/testset/flow/happy/5-delete.json new file mode 100644 index 0000000..5608b97 --- /dev/null +++ b/bulk-api/testset/flow/happy/5-delete.json @@ -0,0 +1,21 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "deletePartitions": { + "nodeIds": [ + "$first" + ] + } + } + }, + "response": { + "success": true, + "command": { + "deletePartitions": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/flow/happy/6-listPartitions-again.json b/bulk-api/testset/flow/happy/6-listPartitions-again.json new file mode 100644 index 0000000..cf27bde --- /dev/null +++ b/bulk-api/testset/flow/happy/6-listPartitions-again.json @@ -0,0 +1,23 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "listPartitions": { + } + } + }, + "response": { + "success": true, + "command": { + "listPartitions": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [], + "nodes": [] + } + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/ids/simple/single/0-idsSingle.json b/bulk-api/testset/ids/simple/single/0-idsSingle.json new file mode 100644 index 0000000..78d9aeb --- /dev/null +++ b/bulk-api/testset/ids/simple/single/0-idsSingle.json @@ -0,0 +1,22 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "ids": { + "count": "1" + } + } + }, + "response": { + "success": true, + "command": { + "ids": { + "nodeIds": [ + "$first" + ] + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/listPartitions/simple/empty/0-listPartitions-empty.json b/bulk-api/testset/listPartitions/simple/empty/0-listPartitions-empty.json new file mode 100644 index 0000000..cf27bde --- /dev/null +++ b/bulk-api/testset/listPartitions/simple/empty/0-listPartitions-empty.json @@ -0,0 +1,23 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "listPartitions": { + } + } + }, + "response": { + "success": true, + "command": { + "listPartitions": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [], + "nodes": [] + } + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/retrieve/simple/empty/0-retrieve-empty.json b/bulk-api/testset/retrieve/simple/empty/0-retrieve-empty.json new file mode 100644 index 0000000..7541570 --- /dev/null +++ b/bulk-api/testset/retrieve/simple/empty/0-retrieve-empty.json @@ -0,0 +1,29 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "retrieve": { + "nodeIds": [ + "ID-2" + ] + } + } + }, + "response": { + "success": true, + "command": { + "retrieve": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [], + "nodes": [] + } + } + }, + "messages": [ + { + "kind": "EmptyIdList" + } + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/store/simple/single/0-createPartition.json b/bulk-api/testset/store/simple/single/0-createPartition.json new file mode 100644 index 0000000..84d3d21 --- /dev/null +++ b/bulk-api/testset/store/simple/single/0-createPartition.json @@ -0,0 +1,55 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "createPartitions": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "ID-2", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [], + "references": [], + "annotations": [], + "parent": null + } + ] + } + } + } + }, + "response": { + "success": true, + "command": { + "createPartitions": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file diff --git a/bulk-api/testset/store/simple/single/1-store.json b/bulk-api/testset/store/simple/single/1-store.json new file mode 100644 index 0000000..7bde3cb --- /dev/null +++ b/bulk-api/testset/store/simple/single/1-store.json @@ -0,0 +1,97 @@ +{ + "request": { + "clientId": "clientA", + "command": { + "store": { + "chunk": { + "serializationFormatVersion": "2023.1", + "languages": [ + { + "key": "-default-key-FileSystem", + "version": "2023.1" + }, + { + "key": "LionCore-builtins", + "version": "2023.1" + } + ], + "nodes": [ + { + "id": "ID-2", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "Disk_A" + } + ], + "containments": [ + { + "containment": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Disk-root-key" + }, + "children": [ + "ID-3" + ] + } + ], + "references": [], + "annotations": [], + "parent": null + }, + { + "id": "ID-3", + "classifier": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Folder-key" + }, + "properties": [ + { + "property": { + "language": "LionCore-builtins", + "version": "2023.1", + "key": "LionCore-builtins-INamed-name" + }, + "value": "root" + } + ], + "containments": [ + { + "containment": { + "language": "-default-key-FileSystem", + "version": "2023.1", + "key": "Folder-listing-key" + }, + "children": [] + } + ], + "references": [], + "annotations": [], + "parent": "ID-2" + } + ] + } + } + } + }, + "response": { + "success": true, + "command": { + "store": { + } + }, + "messages": [ + ] + } +} \ No newline at end of file