{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://openeik.org/schemas/0.4/commands/copy.move.schema.json",
  "$comment": "Written by hand from Part V and the member names of the reference vocabulary; tools/generate-schemas.mjs does not make it yet (schemas/commands/README.md).",
  "title": "copy.move",
  "description": "Moves, turns, lifts or re-levels a copy; levelId null makes it follow its original's level. A member the kind does not define is refused, not dropped (Part V, 1.4).",
  "type": "object",
  "properties": {
    "kind": {
      "const": "copy.move"
    },
    "id": {
      "type": "string",
      "minLength": 1
    },
    "expectedRevision": {
      "type": "integer",
      "minimum": 0
    },
    "at": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "prefixItems": [
        {
          "type": "number"
        },
        {
          "type": "number"
        }
      ]
    },
    "turn": {
      "type": "number",
      "minimum": -360,
      "maximum": 360
    },
    "lift": {
      "type": "number"
    },
    "levelId": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "x-eik-ref": "level"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "kind",
    "id",
    "expectedRevision"
  ],
  "additionalProperties": false
}
