{
	"description": "This type represents a subscription request related to notifications about policy changes  and policy conflicts. It shall comply with the provisions defined in table 5.6.2.5-1.\n",
	"type": "object",
	"properties": {
		"filter": {
			"description": "This type represents a subscription filter related to notifications about policy changes and policy conflicts.  It shall comply with the provisions defined in table 5.6.3.2-1. At a particular nesting level in the filter structure, the following applies: All attributes shall match in  order for the filter to match (logical \"and\" between different filter attributes). If an attribute is an array,  the attribute shall match if at least one of the values in the array matches (logical \"or\" between the values  of one filter attribute).\n",
			"type": "object",
			"properties": {
				"notificationTypes": {
					"description": "Match particular notification types. Permitted values: -\tPolicyChangeNotification -\tPolicyConflictNotification The permitted values of the \"notificationTypes\" attribute are spelled exactly as the names of the notification  types to facilitate automated code generation systems.\n",
					"type": "array",
					"items": {
						"type": "string",
						"enum": [
							"PolicyChangeNotification",
							"PolicyConflictNotification"
						]
					}
				},
				"policyIds": {
					"description": "Match particular policy identifiers. For \"PolicyConflictNotification\", the notification is sent if any of the policies specified in the subscription  is impacted by the conflict, as defined in clause 5.6.2.8.\n",
					"type": "array",
					"items": {
						"description": "An identifier with the intention of being globally unique.\n",
						"type": "string"
					}
				},
				"changeTypes": {
					"description": "Match particular policy management operation types that cause the change of the policy.\n",
					"type": "array",
					"items": {
						"description": "The enumeration PolicyOperationType shall comply with the provisions defined in table 5.6.4.4-1.  It indicates the type of the policy change. Permitted values: * CREATE_POLICY:\tThe policy is created. * TRANSFER_POLICY:\tThe policy is transferred. * DELETE_POLICY:\tThe policy is deleted. * MODIFY_POLICY:\tThe policy is modified.\n",
						"type": "string",
						"enum": [
							"CREATE_POLICY",
							"TRANSFER_POLICY",
							"DELETE_POLICY",
							"MODIFY_POLICY"
						]
					}
				}
			}
		},
		"callbackUri": {
			"description": "String formatted according to IETF RFC 3986.\n",
			"type": "string"
		},
		"authentication": {
			"type": "object",
			"required": [
				"authType"
			],
			"properties": {
				"authType": {
					"description": "Defines the types of Authentication / Authorization which the API consumer is willing to accept when receiving a notification. Permitted values: * BASIC: In every HTTP request to the notification endpoint, use\n  HTTP Basic authentication with the client credentials.\n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the\n  notification endpoint, use an OAuth 2.0 Bearer token, obtained\n  using the client credentials grant type.\n* TLS_CERT: Every HTTP request to the notification endpoint is sent\n  over a mutually authenticated TLS session, i.e. not only the\n  server is authenticated, but also the client is authenticated\n  during the TLS tunnel setup.\n",
					"type": "array",
					"items": {
						"type": "string",
						"enum": [
							"BASIC",
							"OAUTH2_CLIENT_CREDENTIALS",
							"TLS_CERT"
						]
					}
				},
				"paramsBasic": {
					"description": "Parameters for authentication/authorization using BASIC. Shall be present if authType is \"BASIC\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
					"type": "object",
					"properties": {
						"userName": {
							"description": "Username to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
							"type": "string"
						},
						"password": {
							"description": "Password to be used in HTTP Basic authentication. Shall be present if it has not been provisioned out of band.\n",
							"type": "string"
						}
					}
				},
				"paramsOauth2ClientCredentials": {
					"description": "Parameters for authentication/authorization using OAUTH2_CLIENT_CREDENTIALS. Shall be present if authType is \"OAUTH2_CLIENT_CREDENTIALS\" and the contained information has not been provisioned out of band. Shall be absent otherwise.\n",
					"type": "object",
					"properties": {
						"clientId": {
							"description": "Client identifier to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
							"type": "string"
						},
						"clientPassword": {
							"description": "Client password to be used in the access token request of the OAuth 2.0 client credentials grant type. Shall be present if it has not been provisioned out of band. The clientId and clientPassword passed in a subscription shall not be the same as the clientId and clientPassword that are used to obtain authorization for API requests. Client credentials may differ between subscriptions. The value of clientPassword should be generated by a random process.\n",
							"type": "string"
						},
						"tokenEndpoint": {
							"description": "String formatted according to IETF RFC 3986.\n",
							"type": "string"
						}
					}
				}
			}
		}
	},
	"required": [
		"callbackUri"
	]
}