{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://scient.ing/ns/schemas/correction.schema.json", "title": "Correction", "description": "scienting-correction/1: a line of corrections.jsonl, or a proposal; spec/11-corrections.md.", "type": "object", "properties": { "format": { "const": "scienting-correction/1" }, "index": { "type": "integer", "minimum": 1 }, "id": { "$ref": "common.schema.json#/$defs/recordId" }, "op": { "enum": [ "replace", "insert", "delete", "split", "merge", "move", "reclassify", "relabel", "set" ] }, "target": { "$ref": "common.schema.json#/$defs/nodeId" }, "find": { "type": "string", "minLength": 1 }, "replace": { "anyOf": [ { "type": "string" }, { "$ref": "runs.schema.json" } ] }, "run": { "type": "integer", "minimum": 0 }, "offset": { "type": "integer", "minimum": 0 }, "text": { "type": "string", "minLength": 1 }, "parent": { "$ref": "common.schema.json#/$defs/nodeId" }, "node": { "type": "object", "description": "A node subtree to insert: kind, label, attrs, content and children; equation runs name a child by position." }, "with": { "$ref": "common.schema.json#/$defs/nodeId" }, "joiner": { "type": "string" }, "kind": { "$ref": "common.schema.json#/$defs/nodeKind" }, "label": { "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "null" } ] }, "attr": { "enum": [ "level", "columns", "column", "rowspan", "colspan", "role", "header_path", "ordered", "marker", "variant" ] }, "value": {}, "evidence": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/evidence" }, "minItems": 1 }, "author": { "$ref": "common.schema.json#/$defs/author" }, "reason": { "type": "string", "minLength": 1 }, "at": { "$ref": "common.schema.json#/$defs/time" }, "before": { "anyOf": [ { "$ref": "common.schema.json#/$defs/hash" }, { "type": "null" } ] }, "path": { "anyOf": [ { "type": "array", "items": { "$ref": "common.schema.json#/$defs/nodeId" } }, { "type": "null" } ] }, "to_path": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/nodeId" } }, "touched": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/nodeId" }, "uniqueItems": true }, "created": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/nodeId" }, "minItems": 1 }, "retired": { "type": "array", "items": { "$ref": "common.schema.json#/$defs/nodeId" }, "minItems": 1 }, "from": {}, "status": { "enum": [ "proposed" ] }, "after": { "anyOf": [ { "$ref": "common.schema.json#/$defs/hash" }, { "type": "null" } ] }, "place_after": { "anyOf": [ { "$ref": "common.schema.json#/$defs/nodeId" }, { "type": "null" } ] } }, "required": [ "format", "op", "evidence", "author", "reason", "at" ], "additionalProperties": false, "allOf": [ { "if": { "properties": { "op": { "const": "replace" } } }, "then": { "required": [ "target", "find", "replace" ] } }, { "if": { "properties": { "op": { "const": "delete" } } }, "then": { "required": [ "target" ] } }, { "if": { "properties": { "op": { "const": "split" } } }, "then": { "required": [ "target", "offset" ] } }, { "if": { "properties": { "op": { "const": "merge" } } }, "then": { "required": [ "target", "with" ] } }, { "if": { "properties": { "op": { "const": "move" } } }, "then": { "required": [ "target", "parent" ] } }, { "if": { "properties": { "op": { "const": "reclassify" } } }, "then": { "required": [ "target", "kind" ] } }, { "if": { "properties": { "op": { "const": "relabel" } } }, "then": { "required": [ "target", "label" ] } }, { "if": { "properties": { "op": { "const": "set" } } }, "then": { "required": [ "target", "attr", "value" ] } }, { "if": { "properties": { "op": { "const": "insert" } } }, "then": { "oneOf": [ { "required": [ "parent", "node" ] }, { "required": [ "target", "run", "offset", "text" ] } ] } }, { "if": { "required": [ "index" ] }, "then": { "required": [ "id", "before", "after", "path", "touched" ] }, "else": { "required": [ "status" ] } } ] }