{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/arcade-games-nl/json-schema/arcade-games-nl-move-schema.json",
  "title": "Move",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/arcade-games-nl-openapi.json#/components/schemas/Move",
  "oneOf": [
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "enum": [
            "distance",
            "bearing",
            "pulse",
            "locate"
          ]
        },
        "x": {
          "type": "integer",
          "minimum": 0,
          "maximum": 7
        },
        "y": {
          "type": "integer",
          "minimum": 0,
          "maximum": 7
        }
      },
      "required": [
        "type",
        "x",
        "y"
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "rotate"
        },
        "cell": {
          "type": "integer",
          "minimum": 0,
          "maximum": 15
        }
      },
      "required": [
        "type",
        "cell"
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "type",
        "actions"
      ],
      "properties": {
        "type": {
          "const": "program"
        },
        "actions": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "enum": [
              "north",
              "east",
              "south",
              "west",
              "fire",
              "shield",
              "capture",
              "wait"
            ]
          }
        }
      }
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "walk"
        },
        "direction": {
          "enum": [
            "north",
            "east",
            "south",
            "west"
          ]
        }
      },
      "required": [
        "type",
        "direction"
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "press"
        },
        "cell": {
          "type": "integer",
          "minimum": 0,
          "maximum": 24
        }
      },
      "required": [
        "type",
        "cell"
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "sail"
        },
        "direction": {
          "enum": [
            "north",
            "east",
            "south",
            "west"
          ]
        }
      },
      "required": [
        "type",
        "direction"
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "wait"
        }
      },
      "required": [
        "type"
      ]
    },
    {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "const": "turn"
        },
        "ring": {
          "type": "integer",
          "minimum": 0,
          "maximum": 2
        },
        "direction": {
          "enum": [
            "clockwise",
            "counterclockwise"
          ]
        }
      },
      "required": [
        "type",
        "ring",
        "direction"
      ]
    }
  ]
}