json_schema: {
      "$id": "https://guaix.fis.ucm.es/numina/component-schema.json",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "title": "Component",
      "description": "Describe numina component files",
      "type": "object",
      "properties": {
          "name": {
              "type": "string"
          },
          "description": {
              "type": "string"
          },
          "type": {
              "type": "string",
              "enum": [
                  "component",
                  "properties",
                  "instrument",
                  "setup"
              ]
          },
          "uuid": {
              "$ref": "#/definitions/uuid"
          },
          "date_start": {
              "anyOf": [
                  {
                      "$ref": "#/definitions/datetime"
                  },
                  {
                      "type": "null"
                  }
              ]
          },
          "date_end": {
              "anyOf": [
                  {
                      "$ref": "#/definitions/datetime"
                  },
                  {
                      "type": "null"
                  }
              ]
          },
          "properties": {
              "type": "array",
              "items": {
                  "anyOf": [
                      {
                          "$ref": "#/definitions/by_name"
                      },
                      {
                          "$ref": "#/definitions/by_uuid"
                      },
                      {
                          "$ref": "#/definitions/config"
                      }
                  ]
              }
          },
          "components": {
              "type": "array",
              "items": {
                  "anyOf": [
                      {
                          "$ref": "#/definitions/by_name"
                      },
                      {
                          "$ref": "#/definitions/by_uuid"
                      }
                  ]
              }
          },
          "setup": {
              "type": "array",
              "items": {
                  "anyOf": [
                      {
                          "$ref": "#/definitions/by_name"
                      },
                      {
                          "$ref": "#/definitions/by_uuid"
                      }
                  ]
              }
          }
      },
      "required": [
          "name",
          "description",
          "uuid",
          "type",
          "date_end",
          "date_start"
      ],
      "definitions": {
          "uuid": {
              "type": "string",
              "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}$"
          },
          "datetime": {
              "type": "string",
              "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]{1,4})?$"
          },
          "config": {
              "type": "object",
              "properties": {
                  "id": {
                      "type": "string"
                  },
                  "depends": {
                      "type": "array",
                      "items": {
                          "type": "string"
                      }
                  },
                  "values": {}
              },
              "required": [
                  "id",
                  "depends",
                  "values"
              ]
          },
          "by_name": {
              "type": "object",
              "properties": {
                  "name": {
                      "type": "string"
                  },
                  "id": {
                      "type": "string"
                  }
              },
              "required": [
                  "name"
              ]
          },
          "by_uuid": {
              "type": "object",
              "properties": {
                  "uuid": {
                      "$ref": "#/definitions/uuid"
                  },
                  "id": {
                      "type": "string"
                  }
              },
              "required": [
                  "uuid"
              ]
          }
      }
  }