{
  "type": "object",
  "properties": {
    "service_uuid": {
      "type": "string",
      "minLength": 36,
      "maxLength": 36,
      "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
    },  
    "types": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 0,
            "maxLength": 50,
            "pattern": "[A-Z][A-z]*"
          },
          "description": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255
          },
          "icon": {
            "type": "string",
            "minLength": 0,
            "maxLength": 50
          },
          "category": {
            "type": "string",
            "enum": ["phase", "stream", "unit", "flowsheet", "option"]
          },
          "instantiable": {
            "type": "boolean"
          },
          "time_out": {
            "type": "number"
          },
          "integerOptions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "min": {
                  "type": "integer"
                },
                "max": {
                  "type": "integer"
                },
                "value": {
                  "type": "integer"
                }
              },
              "additionalProperties": false,
              "required": ["name", "description", "min", "max", "value"]
            }
          },
          "stringOptions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "enumerator": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                }
              },
              "additionalProperties": false,
              "required": ["name", "description", "enumerator", "value"]
            }
          }
        },
        "additionalProperties": false,
        "required": ["name", "description", "category", "instantiable", "integerOptions", "stringOptions"]
      }
    }
  }
}