{
  "$schema": "http://iglucentral.com/schemas/com.snowplowanalytics.self-desc/schema/jsonschema/1-0-0#",
  "description": "Context schema for OSS terraform modules, VM instances and application events",
  "self": {
    "vendor": "com.snowplowanalytics.oss",
    "name": "oss_context",
    "format": "jsonschema",
    "version": "1-0-1"
  },
  "type": "object",
  "properties": {
    "userProvidedId": {
      "type": [ "string", "null" ],
      "maxLength": 256,
      "description": "Optional ID provided by user as an input to each component. Intended to tie events together across modules, infrastructure and apps when used consistently"
    },
    "autoGeneratedId": {
      "type": [ "string", "null" ],
      "maxLength": 256,
      "description": "ID automatically generated upon running a modules deployment script. Intended to identify each independent module, and the infrastructure it controls"
    },
    "instanceId": {
      "type": [ "string", "null" ],
      "maxLength": 256,
      "description": "A unique identifier for the VM instance. Unique for each instance of the app running within a module"
    },
    "cloud": {
      "type": [ "string", "null" ],
      "maxLength": 256,
      "description": "The cloud AWS or GCP, none for on-premise"
    },
    "region": {
      "type": [ "string", "null" ],
      "maxLength": 256,
      "description": "The region the services are running in"
    },
    "moduleName": {
      "type": [ "string", "null" ],
      "maxLength": 256,
      "description": "The name of the terraform module"
    },
    "moduleVersion": {
      "type": [ "string", "null" ],
      "maxLength": 32,
      "description": "The version of the terraform module e.g. 1.0.0"
    },
    "applicationName": {
      "type": "string",
      "maxLength": 256,
      "description": "The name of the application"
    },
    "applicationVersion": {
      "type": "string",
      "maxLength": 256,
      "description": "The version of the application e.g. 1.0.0"
    },
    "appGeneratedId": {
      "type": [ "string", "null" ],
      "format": "uuid",
      "description": "Automatically generated UUID on every application restart"
    }
  },
  "additionalProperties": false
}