{
  "name"      : "Common Configuration Attributes",
  "desc"      : "A list of configuration attributes that are applicable to all applications.",
  "attributes": {
    // attributes added by the user to describe the configuration
    "name"    : {
      "name"       : "Name",
      "desc"       : "The name of the configuration; no more than 30 characters.",
      "requirement": "required",
      "max_len"    : 30,
      "type"       : "string"
    },
    "desc"    : {
      "name"       : "Description",
      "desc"       : "The description of the configuration.",
      "requirement": "recommended",
      "type"       : "string"
    },
    "enabled" : {
      "name"       : "Startup Type",
      "desc"       : "Select the startup type.",
      "requirement": "required",
      "type"       : "boolean",
      "enum"       : {
        "false": {"name": "Manual"},
        "true" : {"name": "Automatic"}
      },
      "default"    : true
    },
    "author"  : {
      "name"       : "Author",
      "desc"       : "The user who created the configuration.",
      "requirement": "optional",
      "type"       : "string"
    },
    // attributes added by the backend; cannot be changed by user
    "path"    : {
      "name"       : "Path",
      "desc"       : "The configuration path in the repository.",
      "requirement": "system",
      "type"       : "string"
    },
    "uuid"    : {
      "name"       : "UUID",
      "desc"       : "The configuration UUID, created by the repository, which uniquely identifies the configuration.",
      "requirement": "system",
      "type"       : "string"
    },
    "revision": {
      "name"       : "Revision",
      "desc"       : "The configuration revision in the repository. Used for collision detection during concurrent updates.",
      "requirement": "system",
      "type"       : "integer"
    },
    "created" : {
      "name"       : "Created On",
      "desc"       : "The date and time when configuration was created in the repository.",
      "requirement": "system",
      "type"       : "datetime"
    },
    "modified": {
      "name"       : "Modified On",
      "desc"       : "The date and time when configuration was last modified in the repository.",
      "requirement": "system",
      "type"       : "datetime"
    },
    "config"  : {
      "name"       : "Configuration",
      "desc"       : "The configuration object, the content depends on the application.",
      "requirement": "required",
      "type"       : "object",
      "attributes" : {}
    }
  }
}
