{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "ClusterForSerialization", "description": "A representation of a `Cluster` which is more suitable for (de)serialization.\n\nIt does not require a namespace prefix, as that is assumed to match the name of the file to which it is serialized. It uses disjoint, optional sets of edges because that saves a lot of repetition when writing in a data format.", "type": "object", "required": [ "nodes" ], "properties": { "all_type_edges": { "description": "Strict dependencies. A non-root `Node` can only be accessed if all of its dependencies of this type have been marked complete, along with one interchangeable dependency of this `Node` or of a `Node` which is strictly dependent on this `Node`.", "type": [ "array", "null" ], "items": { "$ref": "#/definitions/Edge" } }, "any_type_edges": { "description": "Interchangeable dependencies. A non-root `Node` can only be accessed if one dependency of this type has been marked complete for this node or for a `Node` which is strictly dependent on this `Node`. Furthermore, all strict dependencies must still be marked complete.", "type": [ "array", "null" ], "items": { "$ref": "#/definitions/Edge" } }, "node_plugins": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/PluginForSerialization" } }, "nodes": { "description": "Units of information inside this `Cluster`.", "type": "array", "items": { "$ref": "#/definitions/Node" } }, "pre_cluster_plugins": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/PluginForSerialization" } }, "pre_zip_plugins": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/PluginForSerialization" } }, "roots": { "description": "IDs of `Node`s with no dependencies whatsoever, i.e. the only `Node`s which can be accessed unconditionally.", "type": [ "array", "null" ], "items": { "type": "string" } } }, "additionalProperties": false, "definitions": { "Assignment": { "type": "object", "required": [ "id" ], "properties": { "attachments": { "type": [ "array", "null" ], "items": { "type": "string" } }, "id": { "type": "string" } } }, "Edge": { "type": "object", "required": [ "end_id", "start_id" ], "properties": { "end_id": { "type": "string" }, "start_id": { "type": "string" } }, "additionalProperties": false }, "Node": { "title": "Node", "description": "Deserialization counterpart for the domain concept `Node`.", "type": "object", "required": [ "id", "title" ], "properties": { "assignments": { "title": "Array_of_Assignment", "type": "array", "items": { "$ref": "#/definitions/Assignment" } }, "id": { "description": "An ID should be locally unique inside a `Cluster` and is used to refer to a node inside its `Cluster`.\n\nThe ID also be used to refer to the node from outside its `Cluster`, if it is preceded by the `Cluster`'s namespace prefix.", "type": "string" }, "title": { "description": "Human-readable title for this unit of knowledge.\n\nThis is not required to be unique at any level.", "type": "string" } }, "additionalProperties": false }, "PluginForSerialization": { "if": { "type": "object", "required": [ "path" ], "properties": { "path": { "pattern": "^/home/vincentn/Projects/learning\\-paths\\-tauri\\-react/rust\\-workspace/target/release/libassignments_plugin\\.so$" } } }, "then": { "title": "PluginForSerialization", "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string" }, "require_model_solutions": { "title": "Nullable_Boolean", "type": [ "boolean", "null" ] } }, "additionalProperties": false }, "else": { "title": "PluginForSerialization", "type": "object", "required": [ "path" ], "properties": { "path": { "type": "string" } }, "additionalProperties": false } } } }