{
  "$schema": "http://json-schema.org/draft-04/schema#", 
  "definitions": {
    "dateTime": {
      "description": "standard date and time format - according to RFC 3339. The date/time when the event was produced (according to the service).  It is of the form YYYY-MM-DD'T':HH:mm:SS.sssZ, for example '2012-04-21T08:15:13.511Z'", 
      "format": "date-time", 
      "type": "string"
    }, 
    "error": {
      "additionalProperties": false, 
      "properties": {
        "errors": {
          "maxItems": 10, 
          "items": {
            "properties": {
              "code": {
                "description": "Each app should document its code definitions. Developer friendly naming (camelCase).", 
                "title": "Code custom to the application", 
                "type": "string"
              }, 
              "message": {
                "description": "English only - for developers", 
                "title": "Human reable explanation", 
                "type": "string"
              }
            }, 
            "title": "error", 
            "type": "object"
          }, 
          "type": "array"
        }, 
        "httpStatusCode": {
          "type": "number"
        }, 
        "version": {
          "$ref": "#/definitions/version"
        }
      }, 
      "required": [
        "version"
      ], 
      "type": "object"
    }, 
    "featureEnabled": {
      "description": "String based boolean. Pattern to follow to enable and disable service functionalities.", 
      "enum": [
        "true", 
        "false"
      ], 
      "type": "string"
    }, 
    "links": {
      "maxItems": 32, 
      "items": {
        "dependencies": {
          "state": [
            "stateReason"
          ]
        }, 
        "properties": {
          "enctype": {
            "description": "encoding format of the data envelop. A MIME type.", 
            "type": "string"
          }, 
          "hints": {
            "description": "provides some information on how to manipulate the resource. it shouldn't be used if the resource responds to simple CRUD operations.", 
            "maxItems": 5, 
            "items": {
              "properties": {
                "method": {
                  "description": "by default, the service API definition explains which HTTP methods are allowed on this resource. This hint is recommended if the behavior doesn't match common patterns.", 
                  "enum": [
                    "get", 
                    "put", 
                    "patch", 
                    "post", 
                    "delete"
                  ], 
                  "type": "string"
                }
              }, 
              "title": "hint", 
              "type": "object"
            }, 
            "type": "array"
          }, 
          "href": {
            "description": "URL to the resource defined by the relation name", 
            "pattern": "^(?:[a-zA-Z][a-zA-Z0-9+.-]*:(?://(?:(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:]|%[0-9A-Fa-f]{2})*@)?(?:\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:)(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})?::)|v[0-9A-Fa-f]+\\.[a-zA-Z0-9_.~\\-!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=]|%[0-9A-Fa-f]{2})*)(?::[0-9]*)?(?:/(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*|/(?:(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})+(?:/(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*)?|(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})+(?:/(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*|)(?:\\?(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*)?(?:\\#(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*)?|(?://(?:(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:]|%[0-9A-Fa-f]{2})*@)?(?:\\[(?:(?:(?:[0-9A-Fa-f]{1,4}:){6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|::(?:[0-9A-Fa-f]{1,4}:){5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){4}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){3}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:){2}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:)(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})?::(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(?:(?:[0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})?::)|v[0-9A-Fa-f]+\\.[a-zA-Z0-9_.~\\-!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=]|%[0-9A-Fa-f]{2})*)(?::[0-9]*)?(?:/(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*|/(?:(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})+(?:/(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*)?|(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=@]|%[0-9A-Fa-f]{2})+(?:/(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@]|%[0-9A-Fa-f]{2})*)*|)(?:\\?(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*)?(?:\\#(?:[a-zA-Z0-9_.~\\-!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})*)?)$", 
            "type": "string"
          }, 
          "hrefTemplate": {
            "description": "contains a URL Template. The variable name (inside curly brackets) must be replaced by the variable value. ", 
            "type": "string"
          }, 
          "rel": {
            "description": "Relation nane. Each service must define (or at least clarify) the semantic definition of each relation.", 
            "type": "string"
          }, 
          "state": {
            "default": "available", 
            "description": "service may advertize a resource or action even though it isn't available. When this element is ommitted, the implicit state is available.", 
            "enum": [
              "available", 
              "unavailable"
            ], 
            "type": "string"
          }, 
          "stateReason": {
            "description": "When the state is unavailable, the service may provide a reason.", 
            "enum": [
              "noHardware", 
              "unlicensed"
            ], 
            "type": "string"
          }
        }, 
        "required": [
          "rel"
        ], 
        "title": "link", 
        "type": "object"
      }, 
      "type": "array"
    }, 
    "serviceMetadata": {
      "properties": {
        "description": {
          "description": "add a short human readable description of the service function", 
          "type": "string"
        }, 
        "links": {
          "$ref": "#/definitions/links"
        }, 
        "serviceGun": {
          "description": "service Globally Unique Name. Follow the service naming convention to avoid name collisions. ", 
          "type": "string"
        }, 
        "version": {
          "$ref": "#/definitions/version"
        }
      }, 
      "required": [
        "serviceGun"
      ], 
      "title": "serviceMetadata", 
      "type": "object"
    }, 
    "servicesDiscovery": {
      "properties": {
        "services": {
          "maxItems": 256, 
          "items": {
            "$ref": "#/definitions/serviceMetadata"
          }, 
          "type": "array"
        }, 
        "version": {
          "$ref": "#/definitions/version"
        }
      }, 
      "required": [
        "services"
      ], 
      "type": "object"
    }, 
    "version": {
      "description": "Conforms to the version scheme defined for all APIs", 
      "title": "Common Version", 
      "type": "string"
    }
  }, 
  "description": "Common Glossary Definitions", 
  "gun": "com.hp.cdm.domain.glossary.version.1", 
  "id": "https://schemaregistry.analysis.ext.hp.com/cdm/gun/com.hp.cdm.domain.glossary.version.1.schema.json", 
  "jsonSchemaGun": "com.hp.cdm.domain.glossary.version.1.schema.json", 
  "version": "1.3.0"
}
