{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://json.schemastore.org/truescript.json",
  "title": "TrueScript for *.tscript files",
  "description": "The Ultimate Script Language for monday.com - © 2024 MakeITSimple",
  "additionalProperties": false,
  "type": "object",
  "definitions": {
    "TrueScriptVersion": {
      "description": "TrueScript version info. Format: \"major.minor.patch\"",
      "type": "string",
      "pattern": "^\\d+\\.\\d+\\.\\d+$"
    },
    "UUID4": {
      "description": "Unique ID (UUID4)",
      "type": "string",
      "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$"
    },
    "Environment": {
      "description": "TrueScript environment",
      "type": "string",
      "enum": ["production", "staging", "development"]
    },
    "MondayId": {
      "description": "Any monday.com ID",
      "type": "integer",
      "exclusiveMinimum": 0
    },
    "Result": {
      "description": "The result of the execution of the TrueScript",
      "type": "string",
      "enum": ["success", "error"]
    }
  },
  "properties": {
    "truescript_version": {
      "$ref": "#/definitions/TrueScriptVersion",
      "description": "The minimal version to run this TrueScript. Format: \"major.minor.patch\""
    },
    "id": {
      "$ref": "#/definitions/UUID4",
      "description": "Unique ID of the TrueScript (UUID4)"
    },
    "name": {
      "description": "Short description of the TrueScript",
      "type": "string"
    },
    "description": {
      "description": "A more detailed description of the TrueScript",
      "type": "string"
    },
    "environment": {
      "$ref": "#/definitions/Environment",
      "description": "Intended environment to run the TrueScript"
    },
    "item_id": {
      "$ref": "#/definitions/MondayId",
      "description": "The item's ID to execute the TrueScript upon"
    },
    "params": {
      "description": "Parameters that will be passed to the TrueScript",
      "type": "object",
      "additionalProperties": true
    },
    "tags": {
      "description": "Free tags for any classification",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "result": {
      "description": "The expected result when running this TrueScript",
      "type": "object",
      "properties": {
        "result": {
          "$ref": "#/definitions/Result",
          "description": "The result of the execution of the TrueScript"
        },
        "error": {
          "description": "The error info (when 'result=error')",
          "type": "object",
          "properties": {
            "additionalProperties": true
          }
        }
      },
      "required": ["result"]
    },
    "script": {
      "description": "The TrueScript itself",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    }
  },
  "required": [
    "truescript_version",
    "id",
    "name",
    "environment",
    "item_id",
    "script"
  ]
}
