SOL005_def.yaml.json 21.8 KB
Newer Older
aureliano sinatra's avatar
aureliano sinatra committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448
{
	"definitions": {
		"Identifier": {
			"description": "An identifier with the intention of being globally unique.\n",
			"type": "string"
		},
		"subscriptionId": {
			"description": "Identifier of the subscription that this notification relates to.\n",
			"type": "string"
		},
		"nsInstanceId": {
			"description": "The deleted NS instance identifier.\n",
			"type": "string"
		},
		"Link": {
			"description": "This type represents a link to a resource.\n",
			"type": "object",
			"required": [
				"href"
			],
			"properties": {
				"href": {
					"description": "URI of the referenced resource.\n",
					"type": "string",
					"format": "url"
				}
			}
		},
		"DateTime": {
			"description": "Date-time stamp.  Representation: String formatted according to IETF RFC 3339.\n",
			"type": "string",
			"format": "date-time"
		},
		"String": {
			"description": "This type represents stack of string values\n",
			"type": "string"
		},
		"KeyValuePairs": {
			"description": "This type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key- value pairs is represented as an object. It shall comply with the provisions  defined in clause 4 of IETF RFC 7159.\n",
			"type": "object"
		},
		"IdentifierInVnfd": {
			"description": "Identifier of the VNF Virtual Link Descriptor (VLD) in the VNFD.\n",
			"type": "string"
		},
		"IdentifierInVnf": {
			"description": "An identifier that is unique for the respective type within a VNF instance, but may not be globally unique.\n",
			"type": "string"
		},
		"IdentifierInNsd": {
			"description": "An identifier that is unique within a NS descriptor. Representation: string of variable length.\n",
			"type": "string"
		},
		"IdentifierInPnf": {
			"description": "Identifier of the CP in the scope of the PNF.\n",
			"type": "string"
		},
		"IdentifierInNs": {
			"description": "An identifier that is unique with respect to a NS.  Representation: string of variable length.\n",
			"type": "string"
		},
		"MacAddress": {
			"description": "A MAC address. Representation: string that consists of groups of two hexadecimal digits, separated by hyphens or colons.\n",
			"type": "string",
			"format": "MAC"
		},
		"IpAddress": {
			"description": "An IPV4 or IPV6 address. Representation: In case of an IPV4 address, string that consists of four decimal integers separated by dots, each integer ranging from 0 to 255. In case of an IPV6 address, string that  consists of groups of zero to four hexadecimal digits, separated by colons.\n",
			"type": "string",
			"format": "IP"
		},
		"IpAddressPrefix": {
			"description": "An IPV4 or IPV6 address range in CIDR format. For IPV4 address range, refer to IETF RFC 4632 [12]. For IPV6 address range, refer to IETF RFC 4291 [11].\n",
			"type": "string",
			"format": "CIDR"
		},
		"IdentifierInVim": {
			"description": "An identifier maintained by the VIM or other resource provider. It is expected to be unique within the VIM instance.\n",
			"type": "string"
		},
		"ProblemDetails": {
			"description": "The definition of the general \"ProblemDetails\" data structure from IETF RFC 7807 [19] is reproduced inthis structure. Compared to the general framework defined in IETF RFC 7807 [19], the \"status\" and \"detail\" attributes are mandated to be included by the present document, to ensure that the response contains additional textual information about an error. IETF RFC 7807 [19] foresees extensibility of the \"ProblemDetails\" type. It is possible that particular APIs in the present document, or particular implementations, define extensions to define additional attributes that provide more information about the error. The description column only provides some explanation of the meaning to Facilitate understanding of the design. For a full description, see IETF RFC 7807 [19].\n",
			"type": "object",
			"required": [
				"status",
				"detail"
			],
			"properties": {
				"type": {
					"description": "A URI reference according to IETF RFC 3986 [5] that identifies the problem type. It is encouraged that the URI provides human-readable documentation for the problem (e.g. using HTML) when dereferenced. When this member is not present, its value is assumed to be \"about:blank\".\n",
					"type": "string",
					"format": "URI"
				},
				"title": {
					"description": "A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem, except for purposes of localization. If type is given and other than \"about:blank\", this attribute shall also be provided. A short, human-readable summary of the problem type.  It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization (e.g., using proactive content negotiation; see [RFC7231], Section 3.4).\n",
					"type": "string"
				},
				"status": {
					"description": "The HTTP status code for this occurrence of the problem. The HTTP status code ([RFC7231], Section 6) generated by the origin server for this occurrence of the problem.\n",
					"type": "integer"
				},
				"detail": {
					"description": "A human-readable explanation specific to this occurrence of the problem.\n",
					"type": "string"
				},
				"instance": {
					"description": "A URI reference that identifies the specific occurrence of the problem. It may yield further information if dereferenced.\n",
					"type": "string",
					"format": "URI"
				}
			}
		},
		"ResourceHandle": {
			"required": [
				"vimConnectionId",
				"resourceId"
			],
			"type": "object",
			"description": "This type represents the information that allows addressing a virtualised resource that is used by a VNF instance. Information about the resource is available from the VIM.\n",
			"properties": {
				"vimConnectionId": {
					"description": "Identifier of the VIM connection to manage the resource. This attribute shall only be supported and present if VNF-related resource management in direct mode is applicable. The applicable \"VimConnectionInfo\" structure, which is referenced by vimConnectionId, can be obtained from the \"vimConnectionInfo\" attribute of the \"VnfInstance\" structure.\n",
					"$ref": "#/definitions/Identifier"
				},
				"resourceProviderId": {
					"description": "Identifier of the entity responsible for the management of the resource. This attribute shall only be supported and present when VNF-related resource management in indirect mode is applicable. The identification scheme is outside the scope of the present document.\n",
					"$ref": "#/definitions/Identifier"
				},
				"resourceId": {
					"description": "Identifier of the resource in the scope of the VIM or the resource provider.\n",
					"$ref": "#/definitions/IdentifierInVim"
				},
				"vimLevelResourceType": {
					"description": "Type of the resource in the scope of the VIM or the resource provider.\n",
					"type": "string"
				}
			}
		},
		"CpProtocolData": {
			"description": "This type represents network protocol data.\n",
			"type": "object",
			"required": [
				"layerProtocol"
			],
			"properties": {
				"layerProtocol": {
					"description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET.\n",
					"type": "string",
					"enum": [
						"IP_OVER_ETHERNET"
					]
				},
				"ipOverEthernet": {
					"description": "Network address data for IP over Ethernet to assign to the extCP instance. Shall be present if layerProtocol is equal to \"IP_OVER_ETHERNET\", and shall be absent otherwise.\n",
					"$ref": "#/definitions/IpOverEthernetAddressData"
				}
			}
		},
		"IpOverEthernetAddressData": {
			"description": "This type represents network address data for IP over Ethernet.\n",
			"type": "object",
			"properties": {
				"macAddress": {
					"description": "MAC address. If this attribute is not present, it shall be chosen by the NFV MANO.\n",
					"$ref": "#/definitions/MacAddress"
				},
				"ipAddresses": {
					"description": "List of IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet. If this attribute is not present, no IP address shall be assigned.\n",
					"type": "array",
					"items": {
						"type": "object",
						"required": [
							"type"
						],
						"properties": {
							"type": {
								"description": "The type of the IP addresses. Permitted values: IPV4, IPV6.\n",
								"type": "string",
								"enum": [
									"IPV4",
									"IPV6"
								]
							},
							"fixedAddresses": {
								"description": "Fixed addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
								"type": "array",
								"items": {
									"$ref": "#/definitions/IpAddress"
								}
							},
							"numDynamicAddresses": {
								"description": "Number of dynamic addresses to assign (from the subnet defined by \"subnetId\" if provided). Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n",
								"type": "integer"
							},
							"addressRange": {
								"description": "An IP address range to be used, e.g. in case of egress connections. In case this attribute is present, IP addresses from the range will be used.\n",
								"type": "object",
								"required": [
									"minAddress",
									"maxAddress"
								],
								"properties": {
									"minAddress": {
										"description": "Lowest IP address belonging to the range.\n",
										"$ref": "#/definitions/IpAddress"
									},
									"maxAddress": {
										"description": "Highest IP address belonging to the range.\n",
										"$ref": "#/definitions/IpAddress"
									}
								}
							},
							"subnetId": {
								"description": "Subnet defined by the identifier of the subnet resource in the VIM. In case this attribute is present, IP addresses from that subnet will be assigned; otherwise, IP addresses not bound to a subnet will be assigned.\n",
								"$ref": "#/definitions/IdentifierInVim"
							}
						}
					}
				}
			}
		},
		"ExtVirtualLinkData": {
			"description": "This type represents an external VL. It shall comply with the provisions defined in Table 6.5.3.26-1.\n",
			"type": "object",
			"required": [
				"resourceId",
				"extCps"
			],
			"properties": {
				"extVirtualLinkId": {
					"description": "The identifier of the external VL instance, if provided.\n",
					"$ref": "#/definitions/Identifier"
				},
				"vimId": {
					"description": "Identifier of the VIM that manages this resource. This attribute shall only be supported and present if VNFrelated resource management in direct mode is applicable.\n",
					"$ref": "#/definitions/Identifier"
				},
				"resourceProviderId": {
					"description": "Identifies the entity responsible for the management of this resource. This attribute shall only be supported and present if VNF-related resource management in indirect mode is applicable. The identification scheme is outside the scope of the present document.\n",
					"$ref": "#/definitions/Identifier"
				},
				"resourceId": {
					"description": "The identifier of the resource in the scope of the VIM or the resource provider.\n",
					"$ref": "#/definitions/IdentifierInVim"
				},
				"extCps": {
					"description": "External CPs of the VNF to be connected to this external VL.\n",
					"type": "array",
					"items": {
						"$ref": "#/definitions/VnfExtCpData"
					}
				},
				"extLinkPorts": {
					"description": "Externally provided link ports to be used to connect external connection points to this external VL.\n",
					"type": "array",
					"items": {
						"$ref": "#/definitions/ExtLinkPortData"
					}
				}
			}
		},
		"ExtManagedVirtualLinkData": {
			"description": "This type represents an externally-managed internal VL.  It shall comply with the provisions defined in Table 6.5.3.27-1.\n",
			"type": "object",
			"required": [
				"virtualLinkDescId",
				"resourceId"
			],
			"properties": {
				"extManagedVirtualLinkId": {
					"description": "The identifier of the externally-managed internal VL instance, if provided.\n",
					"$ref": "#/definitions/Identifier"
				},
				"virtualLinkDescId": {
					"description": "The identifier of the VLD in the VNFD for this VL.\n",
					"$ref": "#/definitions/IdentifierInVnfd"
				},
				"vimId": {
					"description": "Identifier of the VIMthat manage this resource. This attribute shall only be supported and present if VNFrelated resource management in direct mode is applicable.\n",
					"$ref": "#/definitions/Identifier"
				},
				"resourceProviderId": {
					"description": "Identifies the entity responsible for the management of this resource. This attribute shall only be supported and present if VNF-related resource management in indirect mode is applicable. The identification scheme is outside the scope of the present document.\n",
					"$ref": "#/definitions/Identifier"
				},
				"resourceId": {
					"description": "The identifier of the resource in the scope of the VIM or the resource provider.\n",
					"$ref": "#/definitions/IdentifierInVim"
				}
			}
		},
		"VnfExtCpData": {
			"description": "This type represents configuration information for external CPs created from a CPD.\n",
			"type": "object",
			"required": [
				"cpdId"
			],
			"properties": {
				"cpdId": {
					"description": "The identifier of the CPD in the VNFD.\n",
					"$ref": "#/definitions/IdentifierInVnfd"
				},
				"cpConfig": {
					"description": "List of instance data that need to be configured on the CP instances created from the respective CPD.\n",
					"type": "array",
					"items": {
						"$ref": "#/definitions/VnfExtCpConfig"
					}
				}
			}
		},
		"ExtLinkPortData": {
			"description": "This type represents an externally provided link port to be used to connect an external connection point to an external VL.\n",
			"type": "object",
			"required": [
				"id",
				"resourceHandle"
			],
			"properties": {
				"id": {
					"description": "Identifier of this link port as provided by the entity that has created the link port.\n",
					"$ref": "#/definitions/Identifier"
				},
				"resourceHandle": {
					"description": "Reference to the virtualised resource realizing this link port.\n",
					"$ref": "#/definitions/ResourceHandle"
				}
			}
		},
		"VnfExtCpConfig": {
			"description": "This type represents an externally provided link port or network address information per instance of an external connection point. In case a link port is provided, the VNFM shall use that link port when connecting the external CP to the external VL. In a link port is not provided, the VNFM shall create a link port on the external VL, and use that link port to connect the external CP to the external VL.\n",
			"type": "object",
			"properties": {
				"cpInstanceId": {
					"description": "Identifier of the external CP instance to which this set of configuration parameters is requested to be applied.  Shall be present if this instance has already been created.\n",
					"$ref": "#/definitions/IdentifierInVnf"
				},
				"linkPortId": {
					"description": "Identifier of a pre-configured link port to which the external CP will be associated. The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\":  * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be  absent for the deletion of an existing external CP instance\n  addressed by cpInstanceId. \n* At least one of these attributes shall be present for a  to-be-created external CP instance or an existing external\n  CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a  link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"  attribute shall be provided referencing a pre-created link port,\n  and the VNFM can use means outside the scope of the present\n  document to obtain the pre-configured address information for the\n  connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API  consumer shall ensure that the cpProtocolData can be used with the\n  pre-created link port referenced by \"linkPortId\".\n",
					"$ref": "#/definitions/Identifier"
				},
				"cpProtocolData": {
					"description": "Parameters for configuring the network protocols on the link port that connects the CP to a VL.  The following conditions apply to the attributes \"linkPortId\" and \"cpProtocolData\":  * The \"linkPortId\" and \"cpProtocolData\" attributes shall both be  absent for the deletion of an existing external CP instance\n  addressed by cpInstanceId. \n* At least one of these attributes shall be present for a  to-be-created external CP instance or an existing external\n  CP instance.\n* If the \"linkPortId\" attribute is absent, the VNFM shall create a  link port.\n* If the \"cpProtocolData\" attribute is absent, the \"linkPortId\"  attribute shall be provided referencing a pre-created link port,\n  and the VNFM can use means outside the scope of the present\n  document to obtain the pre-configured address information for the\n  connection point from the resource representing the link port.\n* If both \"cpProtocolData\" and \"linkportId\" are provided, the API  consumer shall ensure that the cpProtocolData can be used with the\n  pre-created link port referenced by \"linkPortId\".\n",
					"type": "array",
					"items": {
						"$ref": "#/definitions/CpProtocolData"
					}
				}
			}
		},
		"PortRange": {
			"description": "The PortRange data type provides the lower and upper bounds of a range of Internet ports.  It shall comply with the provisions defined in Table 6.5.3.42-1.\n",
			"type": "object",
			"required": [
				"lowerPort",
				"upperPort"
			],
			"properties": {
				"lowerPort": {
					"description": "Identifies the lower bound of the port range. upperPort Integer\n",
					"type": "integer"
				},
				"upperPort": {
					"description": "Identifies the upper bound of the port range.\n",
					"type": "integer"
				}
			}
		},
		"Mask": {
			"description": "The Mask data type identifies the value to be matched for a sequence of  bits at a particular location in a frame. It shall comply with the provisions defined in Table 6.5.3.41-1.\n",
			"type": "object",
			"required": [
				"startingPoint",
				"length",
				"value"
			],
			"properties": {
				"startingPoint": {
					"description": "Indicates the offset between the last bit of the source mac address and the first bit of the sequence of bits to be matched.\n",
					"type": "integer"
				},
				"length": {
					"description": "Indicates the number of bits to be matched.\n",
					"type": "integer"
				},
				"value": {
					"description": "Provide the sequence of bit values to be matched.\n",
					"type": "string"
				}
			}
		},
		"Uri": {
			"description": "String formatted according to IETF RFC 3986.\n",
			"type": "string"
		},
		"SubscriptionAuthentication": {
			"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  HTTP Basic authentication with the client credentials. \n* OAUTH2_CLIENT_CREDENTIALS: In every HTTP request to the  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  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": "The token endpoint from which the access token can be obtained. Shall be present if it has not been provisioned out of band.\n",
							"$ref": "#/definitions/Uri"
						}
					}
				}
			}
		}
	}