diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..8b5c6187184da2b5d0401d5129544f6782540f3c --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +protoc/ +go-stubs/ +ruby-stubs/ +.proto-gen/ +python-stubs/ +.vscode/ \ No newline at end of file diff --git a/AppGrantProto3/proto3/.openapi-generator-ignore b/AppGrantProto3/proto3/.openapi-generator-ignore new file mode 100644 index 0000000000000000000000000000000000000000..7484ee590a3894506cf063799b885428f95a71be --- /dev/null +++ b/AppGrantProto3/proto3/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/AppGrantProto3/proto3/.openapi-generator/FILES b/AppGrantProto3/proto3/.openapi-generator/FILES new file mode 100644 index 0000000000000000000000000000000000000000..f5ee932ae01035e2b4291b1598f0cd16e8b0bbbf --- /dev/null +++ b/AppGrantProto3/proto3/.openapi-generator/FILES @@ -0,0 +1,30 @@ +.openapi-generator-ignore +README.md +models/address_range.proto +models/app_ext_cp_config.proto +models/app_ext_cp_data.proto +models/cp_protocol_data.proto +models/ext_link_port_data.proto +models/ext_virtual_link_data.proto +models/grant.proto +models/grant_info.proto +models/grant_links.proto +models/grant_request.proto +models/grant_request_links.proto +models/grant_request_operation.proto +models/ip_address.proto +models/ip_address_type.proto +models/ip_over_ethernet_address_data.proto +models/key_value_pair.proto +models/link_type.proto +models/problem_details.proto +models/resource.proto +models/resource_definition.proto +models/resource_definition_type.proto +models/resource_handle.proto +models/vim_assets.proto +models/vim_connection_info.proto +models/vim_software_image.proto +models/zone_group_info.proto +models/zone_info.proto +services/granting_service.proto diff --git a/AppGrantProto3/proto3/.openapi-generator/VERSION b/AppGrantProto3/proto3/.openapi-generator/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..1e20ec35c6422c05be73f5929fbac4c67c304fd2 --- /dev/null +++ b/AppGrantProto3/proto3/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.4.0 \ No newline at end of file diff --git a/AppGrantProto3/proto3/README.md b/AppGrantProto3/proto3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..48f73a7c3df91b5840dbb43500f6de57e48c68a3 --- /dev/null +++ b/AppGrantProto3/proto3/README.md @@ -0,0 +1,115 @@ +# gPRC for MEC010-2 + +The ETSI MEC ISG App Grant API described using OpenAPI. + +## Overview +These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +- API version: 3.1.1 +- Package version: +- Build package: org.openapitools.codegen.languages.ProtobufSchemaCodegen +For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api](https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api) + +## Usage + +Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following command from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs ./AppGrantProto3/proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppGrantProto3/proto3/services/* + ``` + + The above command will generate service files for the App Grant API, containing: + - Python data models used in the App Grant API + - Classes and functions needed for the supported HTTP methods in the App Grant API + +### Go + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.appgrantservice";` in .proto files like this: + + ```Go + syntax = "proto3"; + + package mec0102.services.appgrantservice; + + option go_package = "./mec0102.services.appgrantservice"; + + import public "models/.proto"; + ``` + +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/models/* -I./AppGrantProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppGrantProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` file will contain the stubs for the methods defined in the `.proto` file. + +### Ruby + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs ./AppGrantProto3/proto3/models/* + ``` + + Run the following command to generate service file, containing stub and service classes for the endpoints and methods defined in the App Grant API. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppGrantProto3/proto3/services/* + ``` \ No newline at end of file diff --git a/AppGrantProto3/proto3/models/address_range.proto b/AppGrantProto3/proto3/models/address_range.proto new file mode 100644 index 0000000000000000000000000000000000000000..053e8d492e467dc4800f209e30ce628f0f9ba719 --- /dev/null +++ b/AppGrantProto3/proto3/models/address_range.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AddressRange { + + // Lowest IP address belonging to the range. + string minAddress = 186110657; + + // Highest IP address belonging to the range. + string maxAddress = 26244592; + +} diff --git a/AppGrantProto3/proto3/models/app_ext_cp_config.proto b/AppGrantProto3/proto3/models/app_ext_cp_config.proto new file mode 100644 index 0000000000000000000000000000000000000000..894f7813961692f91e5b9ef0ee80e550e46635f8 --- /dev/null +++ b/AppGrantProto3/proto3/models/app_ext_cp_config.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/cp_protocol_data.proto"; + +message AppExtCpConfig { + + // 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. + string cpInstanceId = 363409188; + + // Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note. + repeated CpProtocolData cpProtocolData = 445314194; + + // Identifier of a pre-configured link port to which the external CP will be associated. See note. + string linkPortId = 215924247; + +} diff --git a/AppGrantProto3/proto3/models/app_ext_cp_data.proto b/AppGrantProto3/proto3/models/app_ext_cp_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..21bd886ba225a335757a9b5181009fcf465969a8 --- /dev/null +++ b/AppGrantProto3/proto3/models/app_ext_cp_data.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_ext_cp_config.proto"; + +message AppExtCpData { + + // List of instance data that need to be configured on the CP instances created from the respective CPD. + repeated AppExtCpConfig cpConfig = 378358258; + + // The identifier of the CPD in the AppD. + string cpdId = 94863634; + +} diff --git a/AppGrantProto3/proto3/models/cp_protocol_data.proto b/AppGrantProto3/proto3/models/cp_protocol_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..26f681cdbac125971483a5d6c98525502e644931 --- /dev/null +++ b/AppGrantProto3/proto3/models/cp_protocol_data.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_over_ethernet_address_data.proto"; + +message CpProtocolData { + + // 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. + repeated IpOverEthernetAddressData ipOverEthernet = 356170642; + + // Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note. + repeated IpOverEthernetAddressData layerProtocol = 436659977; + +} diff --git a/AppGrantProto3/proto3/models/ext_link_port_data.proto b/AppGrantProto3/proto3/models/ext_link_port_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..0e2f0bcde86a4b4a69f5341cd3b4e41e488e00a8 --- /dev/null +++ b/AppGrantProto3/proto3/models/ext_link_port_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/resource_handle.proto"; + +message ExtLinkPortData { + + // Identifier of this link port as provided by the entity that has created the link port. + string id = 3355; + + ResourceHandle resourceHandle = 372810794; + +} diff --git a/AppGrantProto3/proto3/models/ext_virtual_link_data.proto b/AppGrantProto3/proto3/models/ext_virtual_link_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..074b58ec645ff9c063e34f2ed68ae823d75f05e2 --- /dev/null +++ b/AppGrantProto3/proto3/models/ext_virtual_link_data.proto @@ -0,0 +1,37 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_ext_cp_data.proto"; +import public "models/ext_link_port_data.proto"; + +message ExtVirtualLinkData { + + // External CPs of the application instance to be connected to this external VL. + repeated AppExtCpData extCps = 215334973; + + // Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the MEPM shall create the link ports on the external VL. + repeated ExtLinkPortData extLinkPorts = 77779180; + + // The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance. + string id = 3355; + + // The identifier of the resource in the scope of the VIM. + string resourceId = 271908409; + + // Identifier of the VIM connection to manage this resource. + string vimConnectionId = 424676819; + +} diff --git a/AppGrantProto3/proto3/models/grant.proto b/AppGrantProto3/proto3/models/grant.proto new file mode 100644 index 0000000000000000000000000000000000000000..f364a811400e9e0cdaea1cbb1a20ca3e4bf7738b --- /dev/null +++ b/AppGrantProto3/proto3/models/grant.proto @@ -0,0 +1,67 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ext_virtual_link_data.proto"; +import public "models/grant_info.proto"; +import public "models/grant_links.proto"; +import public "models/key_value_pair.proto"; +import public "models/vim_assets.proto"; +import public "models/vim_connection_info.proto"; +import public "models/zone_group_info.proto"; +import public "models/zone_info.proto"; + +message Grant { + + // Identifier of the Grant. + string id = 3355; + + // Identifier of the application instance which this Grant is related to. + string appInstanceId = 301879922; + + // The identifier of the application lifecycle management operation occurrence associated to the Grant. + string appLcmOpOccId = 256077684; + + // Provides information regarding VIM connections that are approved to be used by the MEPM to allocate resources, and provides parameters of these VIM connections.See note 1. + repeated VimConnectionInfo vimConnections = 13699291; + + // Identifies resource zones where the resources are approved to be allocated by the MEPM. + repeated ZoneInfo zones = 116085319; + + // Information about groups of resource zones that are related and that the MEO has chosen to fulfil a zoneGroup constraint in the Grant request. + repeated ZoneGroupInfo zoneGroups = 169510754; + + // List of resources that are approved to be added, with one entry per resource. + repeated GrantInfo addResources = 510358911; + + // List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource + repeated GrantInfo tempResources = 53848244; + + // List of resources that are approved to be removed, with one entry per resource. + repeated GrantInfo removeResources = 128530945; + + // List of resources that are approved to be modified, with one entry per resource + repeated GrantInfo updateResources = 240683173; + + VimAssets vimAssets = 295490499; + + // Information about external VLs to connect the application instance to. See note 3. + repeated ExtVirtualLinkData extVirtualLinks = 132752433; + + KeyValuePair additionalParams = 191489165; + + GrantLinks links = 102977465; + +} diff --git a/AppGrantProto3/proto3/models/grant_info.proto b/AppGrantProto3/proto3/models/grant_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..85d529d550be5661749fe800f03811bc1eb6bc3f --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_info.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pair.proto"; + +message GrantInfo { + + // Identifier of the related \"ResourceDefinition\" structure from the related \"GrantRequest\" structure. + string resourceDefinitionId = 254585085; + + // Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated. + string resourceGroupId = 391521293; + + // Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated. + string vimConnectionId = 424676819; + + // Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated. + string zoneId = 159452698; + + // The value of the namespace in which the MCIOs of an application with containerized components shall be deployed. This attribute shall be present if the granted resources are managed by a CISM. The attribute shall be absent if the granted resources are not managed by a CISM. See note. + string containerNamespace = 498357800; + + // \"'This data 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 8259'\" + repeated KeyValuePair mcioConstraints = 392502439; + +} diff --git a/AppGrantProto3/proto3/models/grant_links.proto b/AppGrantProto3/proto3/models/grant_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..272f374b0809a836d8dcff6967a0d19622ccd089 --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message GrantLinks { + + LinkType appLcmOpOcc = 321495162; + + LinkType appInstance = 229294552; + +} diff --git a/AppGrantProto3/proto3/models/grant_request.proto b/AppGrantProto3/proto3/models/grant_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..668a355230eb9e8d7ffa20be2cedf118c6f25bd3 --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_request.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/grant_request_links.proto"; +import public "models/grant_request_operation.proto"; +import public "models/key_value_pair.proto"; +import public "models/resource_definition.proto"; + +message GrantRequest { + + // Identifier of application instance. + string appInstanceId = 301879922; + + // Identifier of application lifecycle management operation occurrence. + string appLcmOpOccId = 256077684; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + GrantRequestOperation operation = 52090218; + + // List of resource definitions in the AppD for resources to be added by the LCM operation which is related to this grant request, with one entry per resource. + repeated ResourceDefinition addResources = 510358911; + + // List of resource definitions in the AppD for resources to be temporarily instantiated during the runtime of the LCM operation which is related to this grant request. See note 3. + repeated ResourceDefinition tempResources = 53848244; + + // Removed by the LCM operation which is related to this grant request, with one entry per resource. + repeated ResourceDefinition removeResources = 128530945; + + // Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource. + repeated ResourceDefinition updateResources = 240683173; + + KeyValuePair additionalParams = 191489165; + + GrantRequestLinks links = 102977465; + +} diff --git a/AppGrantProto3/proto3/models/grant_request_links.proto b/AppGrantProto3/proto3/models/grant_request_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..c556989a85dcee2ba3f52549f698989bf9496fe5 --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_request_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message GrantRequestLinks { + + LinkType appLcmOpOcc = 321495162; + + LinkType appInstance = 229294552; + +} diff --git a/AppGrantProto3/proto3/models/grant_request_operation.proto b/AppGrantProto3/proto3/models/grant_request_operation.proto new file mode 100644 index 0000000000000000000000000000000000000000..f102cbe34b7fb3bad2457d4e0fdc6672989a42dd --- /dev/null +++ b/AppGrantProto3/proto3/models/grant_request_operation.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum GrantRequestOperation { + INSTANTIATE = 0; + OPERATE = 1; + TERMINATE = 2; +} diff --git a/AppGrantProto3/proto3/models/ip_address.proto b/AppGrantProto3/proto3/models/ip_address.proto new file mode 100644 index 0000000000000000000000000000000000000000..d308ed122913e50dbace95c943ed9971111504a7 --- /dev/null +++ b/AppGrantProto3/proto3/models/ip_address.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/address_range.proto"; +import public "models/ip_address_type.proto"; + +message IpAddress { + + IpAddressType type = 3575610; + + // Fixed addresses to assign (from the subnet defined by subnetId if provided). + repeated string fixedAddresses = 64935568; + + // Number of dynamic addresses to assign (from the subnet defined by subnetId if provided) + int32 numDynamicAddresses = 83479096; + + AddressRange addressRange = 251725225; + + // Subnet defined by the identifier of the subnet resource in the VIM. + string subnetId = 455546539; + +} diff --git a/AppGrantProto3/proto3/models/ip_address_type.proto b/AppGrantProto3/proto3/models/ip_address_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..9ba3e3515c28c89898e6f43de3143540c111e811 --- /dev/null +++ b/AppGrantProto3/proto3/models/ip_address_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum IpAddressType { + IPV4 = 0; + IPV6 = 1; +} diff --git a/AppGrantProto3/proto3/models/ip_over_ethernet_address_data.proto b/AppGrantProto3/proto3/models/ip_over_ethernet_address_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..cb3535bf369fcbf05af403b575a0b2c5e129c260 --- /dev/null +++ b/AppGrantProto3/proto3/models/ip_over_ethernet_address_data.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_address.proto"; + +message IpOverEthernetAddressData { + + // \"'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'\" + string macAddress = 471320488; + + // 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. See note 1. + repeated IpAddress ipAddresses = 41850312; + +} diff --git a/AppGrantProto3/proto3/models/key_value_pair.proto b/AppGrantProto3/proto3/models/key_value_pair.proto new file mode 100644 index 0000000000000000000000000000000000000000..facb7e23893cf3d9c69eecde17acff6ba37eba0d --- /dev/null +++ b/AppGrantProto3/proto3/models/key_value_pair.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message KeyValuePair { + + string key = 106079; + + string value = 111972721; + +} diff --git a/AppGrantProto3/proto3/models/link_type.proto b/AppGrantProto3/proto3/models/link_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..9f828ad6b98f4801121d460a803cdb6d23d01fd3 --- /dev/null +++ b/AppGrantProto3/proto3/models/link_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LinkType { + + // URI referring to a resource + string href = 3211051; + +} diff --git a/AppGrantProto3/proto3/models/problem_details.proto b/AppGrantProto3/proto3/models/problem_details.proto new file mode 100644 index 0000000000000000000000000000000000000000..1f11e75cdd2cfcf76ef9f91b5bc1a8c29666154c --- /dev/null +++ b/AppGrantProto3/proto3/models/problem_details.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ProblemDetails { + + // A human-readable explanation specific to this occurrence of the problem + string detail = 261482417; + + // A URI reference that identifies the specific occurrence of the problem + string instance = 18257046; + + // The HTTP status code for this occurrence of the problem + int32 status = 355610639; + + // A short, human-readable summary of the problem type + string title = 110371416; + + // A URI reference according to IETF RFC 3986 that identifies the problem type + string type = 3575610; + +} diff --git a/AppGrantProto3/proto3/models/resource.proto b/AppGrantProto3/proto3/models/resource.proto new file mode 100644 index 0000000000000000000000000000000000000000..7bf2414de110b657cf5df85fb9697064e46a14d6 --- /dev/null +++ b/AppGrantProto3/proto3/models/resource.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vim_connection_info.proto"; + +message Resource { + + VimConnectionInfo vimConnectionInfo = 92542822; + + // Identifier of the resource in the scope of the VIM. + string resourceId = 271908409; + +} diff --git a/AppGrantProto3/proto3/models/resource_definition.proto b/AppGrantProto3/proto3/models/resource_definition.proto new file mode 100644 index 0000000000000000000000000000000000000000..4bd35c5fa8fb2457a9f491be91450e228473fa62 --- /dev/null +++ b/AppGrantProto3/proto3/models/resource_definition.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/resource.proto"; +import public "models/resource_definition_type.proto"; + +message ResourceDefinition { + + // Identifier of the related ResourceDefinition structure from the related GrantRequest structure. + string id = 3355; + + ResourceDefinitionType type = 3575610; + + // Reference to the related VDU in the AppD applicable to this resource. + string vduId = 112069378; + + // Reference to a resource template, in the AppD as follows: - If type=\"COMPUTE\": VirtualComputeDescriptor, - If type=\"LINKPORT\": AppExtCpd, - If type=\"STORAGE\": VirtualStorageDescriptor - If type=\"OSCONTAINER\": osContainerDescriptor Cardinality may be greater than \"1\" when Type =\"OSCONTAINER\" and multiple references to OsContainerDescriptor are present in the AppD. Cardinality shall be \"1\" otherwise. + repeated string resourceTemplateId = 204208672; + + Resource resource = 341064690; + +} diff --git a/AppGrantProto3/proto3/models/resource_definition_type.proto b/AppGrantProto3/proto3/models/resource_definition_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..19e6c2143282bdecbb90aad8462cc3ad26ba2d7a --- /dev/null +++ b/AppGrantProto3/proto3/models/resource_definition_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum ResourceDefinitionType { + COMPUTE = 0; + STORAGE = 1; + LINKPORT = 2; + OSCONTAINER_SEE_NOTE_ = 3; +} diff --git a/AppGrantProto3/proto3/models/resource_handle.proto b/AppGrantProto3/proto3/models/resource_handle.proto new file mode 100644 index 0000000000000000000000000000000000000000..7073fa6aec484c0ce0e1d80a0b2cb45ea357c3d6 --- /dev/null +++ b/AppGrantProto3/proto3/models/resource_handle.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ResourceHandle { + + // Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2. + string resourceId = 271908409; + + // Identifier of the VIM connection to manage the resource.The applicable \"VimConnectionInfo\" structure, which is referenced by vimConnectionId, can be obtained from the \"vimConnectionInfo\" attribute of the \"AppInstance\" structure. + string vimConnectionId = 424676819; + + // Type of the resource in the scope of the VIM. See note 1. + string vimLevelResourceType = 60864239; + +} diff --git a/AppGrantProto3/proto3/models/vim_assets.proto b/AppGrantProto3/proto3/models/vim_assets.proto new file mode 100644 index 0000000000000000000000000000000000000000..46b5e39b9a27114eabe01dbf4599cacdd1517aa2 --- /dev/null +++ b/AppGrantProto3/proto3/models/vim_assets.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vim_software_image.proto"; + +message VimAssets { + + repeated VimSoftwareImage softwareImages = 372852994; + +} diff --git a/AppGrantProto3/proto3/models/vim_connection_info.proto b/AppGrantProto3/proto3/models/vim_connection_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..8f848f15e715f14a5984c74c0042ecea1054ff2f --- /dev/null +++ b/AppGrantProto3/proto3/models/vim_connection_info.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pair.proto"; + +message VimConnectionInfo { + + // 'This data 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 8259' + repeated KeyValuePair accessInfo = 68600784; + + // \"'This data 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 8259'\" + repeated KeyValuePair extra = 96965648; + + // The identifier of the VIM Connection. This identifier is managed by the MEO. + string id = 3355; + + // \"'This data 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 8259'\" + repeated KeyValuePair interfaceInfo = 515703175; + + // The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise. + string vimId = 112210645; + + // Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available. + string vimType = 460598900; + +} diff --git a/AppGrantProto3/proto3/models/vim_software_image.proto b/AppGrantProto3/proto3/models/vim_software_image.proto new file mode 100644 index 0000000000000000000000000000000000000000..e2ede5dd8507992d3b615c689fb302d3e71b2dbe --- /dev/null +++ b/AppGrantProto3/proto3/models/vim_software_image.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message VimSoftwareImage { + + // Identifier which references the software image descriptor in the AppD. + string appDSoftwareImageId = 370467694; + + // Identifier of the VIM connection to access the software image referenced in this structure. + string vimConnectionId = 424676819; + + // Identifier of the software image in the resource management layer (i.e. VIM) See note. + string vimSoftwareImageId = 274162507; + +} diff --git a/AppGrantProto3/proto3/models/zone_group_info.proto b/AppGrantProto3/proto3/models/zone_group_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..d189c073b712e97c2cee2ef9465aefe8e29e3548 --- /dev/null +++ b/AppGrantProto3/proto3/models/zone_group_info.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ZoneGroupInfo { + + // References of identifiers of \"ZoneInfo\" structures, each of which provides information about a resource zone that belongs to this group. + repeated string zoneId = 159452698; + +} diff --git a/AppGrantProto3/proto3/models/zone_info.proto b/AppGrantProto3/proto3/models/zone_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..7d0e323299ab5e4b1d6e22a0a4871e550957b303 --- /dev/null +++ b/AppGrantProto3/proto3/models/zone_info.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ZoneInfo { + + // Identifier of the connection to the VIM that manages the resource zone. The applicable \"VimConnectionInfo\" structure, which is referenced by vimConnectionId, can be obtained from the \" vimConnectionInfo\" attribute of the \"AppInstanceInfo\" structure. + string id = 3355; + + // \"Identifier of the connection to the VIM that manages the resource zone.The applicable \"VimConnectionInfo\" structure, which is referenced byvimConnectionId, can be obtained from the \" vimConnectionInfo\" attribute of the \"AppInstanceInfo\" structure.\" + string vimConnectionId = 424676819; + + // The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). + string zoneId = 159452698; + +} diff --git a/AppGrantProto3/proto3/services/granting_service.proto b/AppGrantProto3/proto3/services/granting_service.proto new file mode 100644 index 0000000000000000000000000000000000000000..d8d8032935ab1e8a9ff79b987c8819d64f602a4c --- /dev/null +++ b/AppGrantProto3/proto3/services/granting_service.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.grantingservice; + +import public "models/grant.proto"; +import public "models/grant_request.proto"; +import public "models/problem_details.proto"; + +service GrantingService { + rpc GrantGET (GrantGETRequest) returns (Grant); + + rpc GrantPOST (GrantPOSTRequest) returns (Grant); + +} + +message GrantGETRequest { + // Identifier of the individual grant. + string grantId = 1; + +} + +message GrantPOSTRequest { + GrantRequest grantRequest = 1; + +} + diff --git a/AppLcmProto3/proto3/.openapi-generator-ignore b/AppLcmProto3/proto3/.openapi-generator-ignore new file mode 100644 index 0000000000000000000000000000000000000000..7484ee590a3894506cf063799b885428f95a71be --- /dev/null +++ b/AppLcmProto3/proto3/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/AppLcmProto3/proto3/.openapi-generator/FILES b/AppLcmProto3/proto3/.openapi-generator/FILES new file mode 100644 index 0000000000000000000000000000000000000000..4596fa1800dd50f1076caf3d4131f0fa54c0da2e --- /dev/null +++ b/AppLcmProto3/proto3/.openapi-generator/FILES @@ -0,0 +1,113 @@ +.openapi-generator-ignore +README.md +models/action.proto +models/app_inst_id_creation_subscription_info.proto +models/app_inst_id_creation_subscription_info_links.proto +models/app_inst_id_creation_subscription_request.proto +models/app_inst_id_deletion_subscription_info.proto +models/app_inst_id_deletion_subscription_request.proto +models/app_inst_notification.proto +models/app_inst_selector_type.proto +models/app_inst_subscription_info.proto +models/app_inst_subscription_info_links.proto +models/app_inst_subscription_request.proto +models/app_instance_identifier_creation_notification.proto +models/app_instance_identifier_deletion_notification.proto +models/app_instance_info.proto +models/app_instance_info_links.proto +models/app_instance_lcm_op_occ_links.proto +models/app_instance_state.proto +models/app_instance_subscription_filter.proto +models/app_instance_subscription_link_list.proto +models/app_instance_subscription_link_list_links.proto +models/app_instance_subscription_link_list_links_subscriptions.proto +models/app_instance_subscription_type.proto +models/app_lcm_op_occ.proto +models/app_lcm_op_occ_notification.proto +models/app_lcm_op_occ_notification_links.proto +models/app_lcm_op_occ_subscription_filter.proto +models/app_lcm_op_occ_subscription_info.proto +models/app_lcm_op_occ_subscription_info_links.proto +models/app_lcm_op_occ_subscription_request.proto +models/app_network_policy.proto +models/app_network_policy_steered_network.proto +models/app_products.proto +models/app_products_versions.proto +models/app_term_cands_for_coord.proto +models/app_term_cands_for_coord_termination_options.proto +models/apps_from_providers.proto +models/block_storage_data.proto +models/cancel_mode.proto +models/category_ref.proto +models/change_state_to.proto +models/checksum_data.proto +models/civic_address_element.proto +models/communication_interface.proto +models/config_platform_for_app_request.proto +models/connectivity_type.proto +models/create_app_instance_request.proto +models/dns_rule_descriptor.proto +models/feature_dependency.proto +models/file_storage_data.proto +models/filter_type.proto +models/instantiate_app_request.proto +models/instantiated_app_state.proto +models/instantiation_state.proto +models/interface_descriptor.proto +models/interface_type.proto +models/ip_address_type.proto +models/ip_addresses.proto +models/key_value_pairs.proto +models/latency_descriptor.proto +models/lcm_operation.proto +models/link_type.proto +models/links.proto +models/location_constraints.proto +models/location_information.proto +models/location_information_civic_address.proto +models/logical_node_requirements.proto +models/max_number_of_impacted_instances.proto +models/mcio_info.proto +models/mec_host_information.proto +models/mep_information.proto +models/min_number_of_preserved_instances.proto +models/monitoring_parameter.proto +models/nfvi_maintenance_info.proto +models/notification_links.proto +models/o_auth2_info.proto +models/object_storage_data.proto +models/operate_app_request.proto +models/operation_params.proto +models/operation_state.proto +models/operation_types.proto +models/os_container_descriptor.proto +models/problem_details.proto +models/qo_s.proto +models/requested_additional_capability_data.proto +models/security_info.proto +models/serializer_type.proto +models/service_dependency.proto +models/service_descriptor.proto +models/stop_type.proto +models/sw_image_desc.proto +models/terminate_app_request.proto +models/termination_type.proto +models/time_stamp.proto +models/traffic_filter.proto +models/traffic_rule_descriptor.proto +models/transport_dependency.proto +models/transport_descriptor.proto +models/transports_supported.proto +models/tunnel_info.proto +models/tunnel_type.proto +models/user_context_transfer_capability.proto +models/vim_connection_info.proto +models/virtual_compute_descriptor.proto +models/virtual_cpu_data.proto +models/virtual_cpu_pinning_data.proto +models/virtual_link_desc_flavour.proto +models/virtual_memory_data.proto +models/virtual_storage_descriptor.proto +models/vnf_virtual_link_desc.proto +services/app_lcm_notifications_service.proto +services/app_lcm_service.proto diff --git a/AppLcmProto3/proto3/.openapi-generator/VERSION b/AppLcmProto3/proto3/.openapi-generator/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..1e20ec35c6422c05be73f5929fbac4c67c304fd2 --- /dev/null +++ b/AppLcmProto3/proto3/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.4.0 \ No newline at end of file diff --git a/AppLcmProto3/proto3/README.md b/AppLcmProto3/proto3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..38a0a84125a93fc9f59d4499e7a7f94c03b43b42 --- /dev/null +++ b/AppLcmProto3/proto3/README.md @@ -0,0 +1,115 @@ +# gPRC for MEC010-2 + +The ETSI MEC ISG Application Life Cycle Management API described using OpenAPI. + +## Overview +These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +- API version: 3.1.1 +- Package version: +- Build package: org.openapitools.codegen.languages.ProtobufSchemaCodegen +For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api](https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api) + +## Usage + +Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following command from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs ./AppLcmProto3/proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppLcmProto3/proto3/services/* + ``` + + The above command will generate service files for the App LCM API, containing: + - Python data models used in the App LCM API + - Classes and functions needed for the supported HTTP methods in the App LCM API + +### Go + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.applcmservice";` in .proto files like this: + + ```Go + syntax = "proto3"; + + package mec0102.services.applcmservice; + + option go_package = "./mec0102.services.applcmservice"; + + import public "models/.proto"; + ``` + +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/models/* -I./AppLcmProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppLcmProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` file will contain the stubs for the methods defined in the `.proto` file. + +### Ruby + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs ./AppLcmProto3/proto3/models/* + ``` + + Run the following command to generate services files, containing stub and service classes for the endpoints and methods defined in App LCM API. + + ```sh + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppLcmProto3/proto3/services/* + ``` \ No newline at end of file diff --git a/AppLcmProto3/proto3/models/action.proto b/AppLcmProto3/proto3/models/action.proto new file mode 100644 index 0000000000000000000000000000000000000000..cf7c167c80b540fe73afaa0845ff1f456e71a579 --- /dev/null +++ b/AppLcmProto3/proto3/models/action.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum Action { + DROP = 0; + FORWARD_DECAPSULATED = 1; + FORWARD_ENCAPSULATED = 2; + PASSTHROUGH = 3; + DUPLICATE_DECAPSULATED = 4; + DUPLICATE_ENCAPSULATED = 5; +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info.proto b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..006a49be2db01d15fe9a248e60470920ddb8b402 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_id_creation_subscription_info_links.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdCreationSubscriptionInfo { + + // Identifier of the subscription to application instance operational state change notification. + string id = 3355; + + // Shall be set to \"AppIdentifierCreationSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + AppInstIdCreationSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info_links.proto b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..6cd098e1cedebdd00ac4be59e610b1a0428c94bb --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstIdCreationSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_request.proto b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..cfa9f63488b9c2827bd3c86a3d25cb9859cea717 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_creation_subscription_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdCreationSubscriptionRequest { + + // Shall be set to \"AppIdentifierCreationSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_info.proto b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..6042ff90f41891406eed885ef4983e79cc44b354 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_info.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_id_creation_subscription_info_links.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdDeletionSubscriptionInfo { + + // Identifier of the subscription to application instance operational state change notification. + string id = 3355; + + // Shall be set to \"AppIdentifierDeletionSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + AppInstIdCreationSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_request.proto b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..04b435b9aa9a038ff8dadc38ab7e2fb272a9f025 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_id_deletion_subscription_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_filter.proto"; + +message AppInstIdDeletionSubscriptionRequest { + + // Shall be set to \"AppIdentifierDeletionSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_notification.proto b/AppLcmProto3/proto3/models/app_inst_notification.proto new file mode 100644 index 0000000000000000000000000000000000000000..bbde331ae6e1065ebcf46dc711aa6e6141170ddc --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_notification.proto @@ -0,0 +1,56 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/links.proto"; +import public "models/location_information.proto"; +import public "models/time_stamp.proto"; + +message AppInstNotification { + + Links links = 102977465; + + // The application descriptor identifier identifies the application package and the application descriptor in a globally unique way. + string appDId = 337359172; + + // Identifier of application instance. + string appInstanceId = 301879922; + + // Identifier of the onboarded application package. + string appPkgId = 79968872; + + // Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppInstanceStateChangeSubscription\" for this notification type. + string notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + LocationInformation appInstLocation = 476747557; + + // Application instance state + enum AppInstanceStateEnum { + NOT_INSTANTIATED_1 = 0; + STARTED_1 = 1; + STOPPED_1 = 2; + } + + AppInstanceStateEnum appInstanceState = 366659678; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_selector_type.proto b/AppLcmProto3/proto3/models/app_inst_selector_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..ec6d28ffda7cbe7064ce8ae57efb67b8bd2059e7 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_selector_type.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppInstSelectorType { + VOID = 0; + APP_IDENTITY = 1; + APP_NAME = 2; + APP_D_ID = 3; + APP_FROM_PROVIDER = 4; +} diff --git a/AppLcmProto3/proto3/models/app_inst_subscription_info.proto b/AppLcmProto3/proto3/models/app_inst_subscription_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..f8bdf83838f09a14dbc290be3c72f99be92092cb --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_subscription_info.proto @@ -0,0 +1,44 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_subscription_info_links.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstSubscriptionInfo { + + // 'Identifier of the subscription to application instance operational state change notification.' + string id = 3355; + + // Shall be set to \"AppInstanceStateChangeSubscription\". + string subscriptionType = 515734025; + + // Application instance state subscribed to. + enum AppInstanceStateEnum { + NOT_INSTANTIATED_2 = 0; + STARTED_2 = 1; + STOPPED_2 = 2; + } + + AppInstanceStateEnum appInstanceState = 366659678; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + AppInstSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_subscription_info_links.proto b/AppLcmProto3/proto3/models/app_inst_subscription_info_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..90a22ee724126724da906cd6536052621f4a23b4 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppLcmProto3/proto3/models/app_inst_subscription_request.proto b/AppLcmProto3/proto3/models/app_inst_subscription_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..8baba768a97cfbc5658684824b9be64e55f4c547 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_inst_subscription_request.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_state.proto"; +import public "models/app_instance_subscription_filter.proto"; + +message AppInstSubscriptionRequest { + + // Shall be set to \"AppInstanceStateChangeSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppInstanceState appInstanceState = 366659678; + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_identifier_creation_notification.proto b/AppLcmProto3/proto3/models/app_instance_identifier_creation_notification.proto new file mode 100644 index 0000000000000000000000000000000000000000..95eeaf0d3782de61d7509620fb67bf407b6d4c0b --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_identifier_creation_notification.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/notification_links.proto"; +import public "models/time_stamp.proto"; + +message AppInstanceIdentifierCreationNotification { + + // Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppIdentifierCreationSubscription\" for this notification type. + string notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // The created application instance Identifier. + string appInstanceId = 301879922; + + NotificationLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_identifier_deletion_notification.proto b/AppLcmProto3/proto3/models/app_instance_identifier_deletion_notification.proto new file mode 100644 index 0000000000000000000000000000000000000000..a330599395beb1645443418f334ad10726044e33 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_identifier_deletion_notification.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/notification_links.proto"; +import public "models/time_stamp.proto"; + +message AppInstanceIdentifierDeletionNotification { + + // Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppIdentifierDeletionSubscription\" for this notification type. + string notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // The deleted application instance Identifier. + string appInstanceId = 301879922; + + NotificationLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_info.proto b/AppLcmProto3/proto3/models/app_instance_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..8cafc093a470f2c208708da1b6b3702a18508b43 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_info.proto @@ -0,0 +1,70 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_info_links.proto"; +import public "models/communication_interface.proto"; +import public "models/instantiated_app_state.proto"; +import public "models/instantiation_state.proto"; +import public "models/vim_connection_info.proto"; + +message AppInstanceInfo { + + // Identifier of application instance. + string id = 3355; + + // Name of the application instance. + string appInstanceName = 340710785; + + // Human-readable description of the application instance to be created. + string appInstanceDescription = 52295612; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // Identifier of the NS instance created by NFVO in which the MEC application has been instantiated as a VNF instance. See note 2 + string nsInstanceId = 39386060; + + // Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as. See note 2. + string vnfInstanceId = 510586847; + + // Interface for communication with other application instances. See clause 7.5.2 of ETSI GS MEC 021 [13] for the data type definition. + repeated CommunicationInterface communicationInterface = 507129349; + + // Name to identify the MEC application. + string appName = 257265589; + + // Identifies the version of software of the MEC application. + string appSoftVersion = 462216301; + + // Identifies the version of the application descriptor. + string appDVersion = 414673174; + + // Identifier of the onboarded application package. + string appPkgId = 79968872; + + // Information about VIM connections to be used for managing the resources for the application instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the MEO and referenced from other data structures via the \"vimConnectionId\" attribute. See notes 1 and 3. + repeated VimConnectionInfo vimConnectionInfo = 92542822; + + InstantiationState instantiationState = 18182332; + + InstantiatedAppState instantiatedAppState = 307522509; + + AppInstanceInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_info_links.proto b/AppLcmProto3/proto3/models/app_instance_info_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..3a2286a431b53c6cdf38dca155a10a8a3c37db28 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_info_links.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstanceInfoLinks { + + LinkType self = 3526476; + + LinkType instantiate = 475561241; + + LinkType terminate = 425377380; + + LinkType operate = 189331070; + + LinkType configureUnderscoreplatformUnderscoreforUnderscoreapp = 522443436; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_lcm_op_occ_links.proto b/AppLcmProto3/proto3/models/app_instance_lcm_op_occ_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..c32bef06fb3878a54d3c1481e330674af47f6857 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_lcm_op_occ_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppInstanceLcmOpOccLinks { + + LinkType self = 3526476; + + LinkType appInstance = 229294552; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_state.proto b/AppLcmProto3/proto3/models/app_instance_state.proto new file mode 100644 index 0000000000000000000000000000000000000000..5884b93d4da4e665e56b5c717c5dc25beb06e2d0 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_state.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppInstanceState { + NOT_INSTANTIATED_3 = 0; + STARTED_3 = 1; + STOPPED_3 = 2; +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_filter.proto b/AppLcmProto3/proto3/models/app_instance_subscription_filter.proto new file mode 100644 index 0000000000000000000000000000000000000000..60b25442d0508db526afc3fbc1b3187b8322baf0 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_filter.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_inst_selector_type.proto"; +import public "models/apps_from_providers.proto"; + +message AppInstanceSubscriptionFilter { + + AppInstSelectorType appInstSelectorType = 60935523; + + // If appInstIdSelector = APP_IDENTITY match existing application instances with an \"application instance identifier\" listed in this attribute. If appInstIdSelector = APP_NAME match existing application instances with an \"application instance name\" listed in this attribute. If appInstIdSelector = APP_D_ID match existing application instances, or those created in the future whilst the subscription is active, based on the application descriptors identified by one of the \"application descriptor identities\" listed in this attribute. If appInstIdSelector = APP_FROM_PROVIDER this attribute shall not be included. + repeated string appInstances = 128809312; + + repeated AppsFromProviders appsFromProviders = 184865085; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_link_list.proto b/AppLcmProto3/proto3/models/app_instance_subscription_link_list.proto new file mode 100644 index 0000000000000000000000000000000000000000..029da176faa88441680d8d8194b34ec5313ae24c --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_link_list.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_link_list_links.proto"; + +message AppInstanceSubscriptionLinkList { + + AppInstanceSubscriptionLinkListLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links.proto b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..c09626dbfae55f69b9e5ad6207a2cd70ed8ebbba --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_link_list_links_subscriptions.proto"; + +message AppInstanceSubscriptionLinkListLinks { + + // URI referring to a resource + string self = 3526476; + + // A link list to the subscriptions. + repeated AppInstanceSubscriptionLinkListLinksSubscriptions subscriptions = 376752889; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links_subscriptions.proto b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links_subscriptions.proto new file mode 100644 index 0000000000000000000000000000000000000000..f98dbfbb1166972e96ced87cf4d5acc38026dfee --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_link_list_links_subscriptions.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_type.proto"; + +message AppInstanceSubscriptionLinkListLinksSubscriptions { + + // The URI referring to the subscription. + string href = 3211051; + + AppInstanceSubscriptionType subscriptionType = 515734025; + +} diff --git a/AppLcmProto3/proto3/models/app_instance_subscription_type.proto b/AppLcmProto3/proto3/models/app_instance_subscription_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..f48647cdd9c03af894d9fae1cb272db3c86332e5 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_instance_subscription_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppInstanceSubscriptionType { + APPINSTANCESTATECHANGESUBSCRIPTION = 0; + APPLCMOPOCCSTATECHANGESUBSCRIPTION = 1; + APPIDENTIFIERCREATIONSUBSCRIPTION = 2; + APPIDENTIFIERDELETIONSUBSCRIPTION = 3; +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ.proto new file mode 100644 index 0000000000000000000000000000000000000000..a0335f565b20b7b4f58049d158dfd57d78c4994e --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ.proto @@ -0,0 +1,46 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_lcm_op_occ_links.proto"; +import public "models/stop_type.proto"; +import public "models/operation_types.proto"; +import public "models/operation_params.proto"; +import public "models/operation_state.proto"; +import public "models/time_stamp.proto"; + +message AppLcmOpOcc { + + // 'Identifier of the subscription to application LCM operation occurrence notification' + string id = 3355; + + OperationState operationState = 370325656; + + TimeStamp stateEnteredTime = 33947541; + + TimeStamp startTime = 518682036; + + OperationTypes lcmOperation = 248183761; + + OperationParams operationParams = 308751926; + + // If the application LCM operation occurrence operationState is in \"PROCESSING\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false. + bool isCancelPending = 412226383; + + StopType cancelMode = 277811008; + + AppInstanceLcmOpOccLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_notification.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification.proto new file mode 100644 index 0000000000000000000000000000000000000000..05ec6fe30e71ea43a8977caa127a21a7d16e368f --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification.proto @@ -0,0 +1,61 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_lcm_op_occ_notification_links.proto"; +import public "models/time_stamp.proto"; + +message AppLcmOpOccNotification { + + // Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value. + string id = 3355; + + // Discriminator for the different notification types. Shall be set to \"AppLcmOpOccStateChangeSubscription\" for this notification type. + string notificationType = 925384; + + // Type of the LCM operation represented by this application instance LCM operation occurrence. + enum OperationTypeEnum { + INSTANTIATE = 0; + OPERATE = 1; + TERMINATE = 2; + } + + OperationTypeEnum operationType = 91999553; + + // Operation state. + enum OperationStateEnum { + STARTING = 0; + PROCESSING = 1; + COMPLETED = 2; + FAILED = 3; + FAILED_TEMP = 4; + } + + OperationStateEnum operationState = 370325656; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // Identifier of application lifecycle management operation occurrence. + string appLcmOpOccId = 256077684; + + // Identifier of application instance. + string appInstanceId = 301879922; + + AppLcmOpOccNotificationLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_notification_links.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..f4cc74c73beea8f56b2495df1424f16247092d04 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_notification_links.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppLcmOpOccNotificationLinks { + + LinkType appInstance = 229294552; + + LinkType subscription = 341203229; + + LinkType appLcmOpOcc = 321495162; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_filter.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_filter.proto new file mode 100644 index 0000000000000000000000000000000000000000..9e4f2b43e13d4dbe92dd26f59d72a602b2c4e45d --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_filter.proto @@ -0,0 +1,34 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_instance_subscription_filter.proto"; +import public "models/operation_state.proto"; +import public "models/operation_types.proto"; + +message AppLcmOpOccSubscriptionFilter { + + AppInstanceSubscriptionFilter appInstanceSubscriptionFilter = 117439341; + + // Match particular notification types. + string notificationTypes = 508183988; + + // Type of the LCM operation state represented by this application instance LCM operation occurrence. + repeated OperationState operationStates = 205806010; + + // Type of the LCM operation represented by this application instance LCM operation occurrence. + repeated OperationTypes operationTypes = 369239216; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..ca09aa5c35f9c7624c1fe251e75a575e62f2eb46 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_lcm_op_occ_subscription_filter.proto"; +import public "models/app_lcm_op_occ_subscription_info_links.proto"; + +message AppLcmOpOccSubscriptionInfo { + + // Identifier of this subscription resource. + string id = 3355; + + // Shall be set to \"AppLcmOpOccStateChangeSubscription\". + string subscriptionType = 515734025; + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppLcmOpOccSubscriptionFilter appLcmOpOccSubscriptionFilter = 46164148; + + AppLcmOpOccSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info_links.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..0d107c9e4938f8ef2f43f9192e5a0f9afa06fbad --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppLcmOpOccSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_request.proto b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..21c72670c9c6487ede4ec2386c4bd2ea5a50995f --- /dev/null +++ b/AppLcmProto3/proto3/models/app_lcm_op_occ_subscription_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_lcm_op_occ_subscription_filter.proto"; + +message AppLcmOpOccSubscriptionRequest { + + AppLcmOpOccSubscriptionFilter appLcmOpOccSubscriptionFilter = 46164148; + + // The URI of the endpoint for the subscription related notification to be sent to. + string callbackUri = 259033834; + + // Shall be set to \"AppLcmOpOccStateChangeSubscription\". + string subscriptionType = 515734025; + +} diff --git a/AppLcmProto3/proto3/models/app_network_policy.proto b/AppLcmProto3/proto3/models/app_network_policy.proto new file mode 100644 index 0000000000000000000000000000000000000000..3f4bf25d78834e217e8f34adcb4c210e9aba210e --- /dev/null +++ b/AppLcmProto3/proto3/models/app_network_policy.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_network_policy_steered_network.proto"; + +message AppNetworkPolicy { + + AppNetworkPolicySteeredNetwork steeredNetwork = 32182818; + +} diff --git a/AppLcmProto3/proto3/models/app_network_policy_steered_network.proto b/AppLcmProto3/proto3/models/app_network_policy_steered_network.proto new file mode 100644 index 0000000000000000000000000000000000000000..00cffa0a86cb04ddf4aae05bbae281dda889007e --- /dev/null +++ b/AppLcmProto3/proto3/models/app_network_policy_steered_network.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppNetworkPolicySteeredNetwork { + + bool cellularNetwork = 392334692; + + bool wiMinusfiNetwork = 282209517; + + bool fixedAccessNetwork = 113322265; + +} diff --git a/AppLcmProto3/proto3/models/app_products.proto b/AppLcmProto3/proto3/models/app_products.proto new file mode 100644 index 0000000000000000000000000000000000000000..c00ac3cf90beb98743a7fec8395370751eae1453 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_products.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_products_versions.proto"; + +message AppProducts { + + // Name to identify the MEC application. + string appName = 257265589; + + repeated AppProductsVersions versions = 374440296; + +} diff --git a/AppLcmProto3/proto3/models/app_products_versions.proto b/AppLcmProto3/proto3/models/app_products_versions.proto new file mode 100644 index 0000000000000000000000000000000000000000..4963e35c5d96d1614814a40227c7e90aa005e7a9 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_products_versions.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppProductsVersions { + + // Identifies the version of software of the MEC application. + string appSoftVersion = 462216301; + + repeated string appDVersion = 414673174; + +} diff --git a/AppLcmProto3/proto3/models/app_term_cands_for_coord.proto b/AppLcmProto3/proto3/models/app_term_cands_for_coord.proto new file mode 100644 index 0000000000000000000000000000000000000000..f9444f5fd0260929fd96aa35581a3ec5728b577e --- /dev/null +++ b/AppLcmProto3/proto3/models/app_term_cands_for_coord.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_term_cands_for_coord_termination_options.proto"; + +message AppTermCandsForCoord { + + // Sets of application options for the MEO/MEAO to select from as candidates for termination. The MEO/MEAO shall select one or more of these alternate options to pass to the OSS when utilizing the LCM coordination exchange in pre-emption situations. For each option, the MEO/MEAO may select all, or a subset, of the candidate set's members. + repeated AppTermCandsForCoordTerminationOptions terminationOptions = 335620860; + +} diff --git a/AppLcmProto3/proto3/models/app_term_cands_for_coord_termination_options.proto b/AppLcmProto3/proto3/models/app_term_cands_for_coord_termination_options.proto new file mode 100644 index 0000000000000000000000000000000000000000..ec42007cf4bf45a7a41d911ed1b677cef95a6d66 --- /dev/null +++ b/AppLcmProto3/proto3/models/app_term_cands_for_coord_termination_options.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppTermCandsForCoordTerminationOptions { + + // List of application instance identifiers, constituting a candidate set for termination. + repeated string appInstIdTerminationCands = 119235422; + +} diff --git a/AppLcmProto3/proto3/models/apps_from_providers.proto b/AppLcmProto3/proto3/models/apps_from_providers.proto new file mode 100644 index 0000000000000000000000000000000000000000..2440565742f6903e78e2ff1509ab9c1a12e4a04c --- /dev/null +++ b/AppLcmProto3/proto3/models/apps_from_providers.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_products.proto"; + +message AppsFromProviders { + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // If present, match application instances that belong to application products with certain product names, from one particular provider. + repeated AppProducts appProducts = 255852891; + +} diff --git a/AppLcmProto3/proto3/models/block_storage_data.proto b/AppLcmProto3/proto3/models/block_storage_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..f2537fdf82c8d23e9614759a253968449de17271 --- /dev/null +++ b/AppLcmProto3/proto3/models/block_storage_data.proto @@ -0,0 +1,33 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/sw_image_desc.proto"; + +message BlockStorageData { + + // Size of virtualised storage resource in GB. + float sizeOfStorage = 93418079; + + // An array of key-value pairs that articulate the storage deployment requirements. + repeated KeyValuePairs vduStorageRequirements = 425848926; + + // Indicate if the storage support RDMA. + bool rdmaEnabled = 457519388; + + SwImageDesc swImageDesc = 202180474; + +} diff --git a/AppLcmProto3/proto3/models/category_ref.proto b/AppLcmProto3/proto3/models/category_ref.proto new file mode 100644 index 0000000000000000000000000000000000000000..398f56cabe69b6793bc6acf8716043350f031a82 --- /dev/null +++ b/AppLcmProto3/proto3/models/category_ref.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message CategoryRef { + + // Reference of the catalogue. + string href = 3211051; + + // Unique identifier of the category. + string id = 3355; + + // Name of the category. + string name = 3373707; + + // Category version. + string version = 351608024; + +} diff --git a/AppLcmProto3/proto3/models/change_state_to.proto b/AppLcmProto3/proto3/models/change_state_to.proto new file mode 100644 index 0000000000000000000000000000000000000000..c9e5101674f792d57b846b4806beebd361cd9473 --- /dev/null +++ b/AppLcmProto3/proto3/models/change_state_to.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum ChangeStateTo { + STARTED_4 = 0; + STOPPED_4 = 1; +} diff --git a/AppLcmProto3/proto3/models/checksum_data.proto b/AppLcmProto3/proto3/models/checksum_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..03b4a5295ada2e1c6d40ae82b6abd648cf939b79 --- /dev/null +++ b/AppLcmProto3/proto3/models/checksum_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ChecksumData { + + // Specifies the algorithm used to obtain the checksum value. See note. + string algorithm = 225490031; + + // Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + string hash = 3195150; + +} diff --git a/AppLcmProto3/proto3/models/civic_address_element.proto b/AppLcmProto3/proto3/models/civic_address_element.proto new file mode 100644 index 0000000000000000000000000000000000000000..761ca4e8760bfab29b8c22480fe33df7831d4f91 --- /dev/null +++ b/AppLcmProto3/proto3/models/civic_address_element.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message CivicAddressElement { + + // 'Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776.' + int32 caType = 294735690; + + // 'Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776.' + string caValue = 527998899; + +} diff --git a/AppLcmProto3/proto3/models/communication_interface.proto b/AppLcmProto3/proto3/models/communication_interface.proto new file mode 100644 index 0000000000000000000000000000000000000000..b7b07f52d74c14d3ed09aaf9f378438428d6c297 --- /dev/null +++ b/AppLcmProto3/proto3/models/communication_interface.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_addresses.proto"; + +message CommunicationInterface { + + // Entry point information of the service as one or more pairs of IP address and port. + repeated IpAddresses ipAddresses = 41850312; + +} diff --git a/AppLcmProto3/proto3/models/config_platform_for_app_request.proto b/AppLcmProto3/proto3/models/config_platform_for_app_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..a750b1f45176589a9eb3b4aa00ad68c73aa48b66 --- /dev/null +++ b/AppLcmProto3/proto3/models/config_platform_for_app_request.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_network_policy.proto"; +import public "models/dns_rule_descriptor.proto"; +import public "models/feature_dependency.proto"; +import public "models/latency_descriptor.proto"; +import public "models/service_dependency.proto"; +import public "models/service_descriptor.proto"; +import public "models/traffic_rule_descriptor.proto"; +import public "models/transport_dependency.proto"; +import public "models/user_context_transfer_capability.proto"; + +message ConfigPlatformForAppRequest { + + repeated ServiceDependency appServiceRequired = 199715094; + + repeated ServiceDependency appServiceOptional = 513837271; + + repeated ServiceDescriptor appServiceProduced = 125963514; + + repeated FeatureDependency appFeatureRequired = 11684950; + + repeated FeatureDependency appFeatureOptional = 325807127; + + repeated TransportDependency transportDependencies = 237579534; + + repeated TrafficRuleDescriptor appTrafficRule = 234628538; + + repeated DNSRuleDescriptor appDNSRule = 390231655; + + LatencyDescriptor appLatency = 12186527; + + UserContextTransferCapability userContextTransferCapability = 306228764; + + AppNetworkPolicy appNetworkPolicy = 351140772; + +} diff --git a/AppLcmProto3/proto3/models/connectivity_type.proto b/AppLcmProto3/proto3/models/connectivity_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..09bbcc1c99544d5fb54b0e12714e76e1463ddd16 --- /dev/null +++ b/AppLcmProto3/proto3/models/connectivity_type.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ConnectivityType { + + // Specifies the protocols that the VL uses See note 1 and note 2. + enum LayerProtocolEnum { + ETHERNET = 0; + MPLS = 1; + ODU2 = 2; + IPV4 = 3; + IPV6 = 4; + PSEUDO_WIRE = 5; + ETC = 6; + } + + LayerProtocolEnum layerProtocol = 436659977; + + // Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). + string flowPattern = 159675011; + +} diff --git a/AppLcmProto3/proto3/models/create_app_instance_request.proto b/AppLcmProto3/proto3/models/create_app_instance_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..e1d72c761d57d42665c2ecc40d4838cffecb92ac --- /dev/null +++ b/AppLcmProto3/proto3/models/create_app_instance_request.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/mep_information.proto"; + +message CreateAppInstanceRequest { + + // The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way. + string appDId = 337359172; + + // Human-readable description of the application instance to be created. + string appInstanceDescription = 52295612; + + // Human-readable name of the application instance to be created. + string appInstanceName = 340710785; + + MepInformation appPlacementInfo = 13769585; + +} diff --git a/AppLcmProto3/proto3/models/dns_rule_descriptor.proto b/AppLcmProto3/proto3/models/dns_rule_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..800a5d80b0d99bb3db1fee11afeaf98fe8f68394 --- /dev/null +++ b/AppLcmProto3/proto3/models/dns_rule_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_address_type.proto"; + +message DNSRuleDescriptor { + + // Identifies the DNS Rule + string dnsRuleId = 478543936; + + // FQDN of the DNS rule + string domainName = 170344083; + + // IP address given by the DNS rule + string ipAddress = 23420112; + + IpAddressType ipAddressType = 46674345; + + // Time-to-live value + int32 ttl = 115180; + +} diff --git a/AppLcmProto3/proto3/models/feature_dependency.proto b/AppLcmProto3/proto3/models/feature_dependency.proto new file mode 100644 index 0000000000000000000000000000000000000000..f9d89bfd98fd6c8ae2d903a5b2fd7a667a5c9da9 --- /dev/null +++ b/AppLcmProto3/proto3/models/feature_dependency.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message FeatureDependency { + + // The name of the feature, for example, UserApps, UEIdentity, etc. + string featureName = 377160031; + + // The version of the feature. + string version = 351608024; + +} diff --git a/AppLcmProto3/proto3/models/file_storage_data.proto b/AppLcmProto3/proto3/models/file_storage_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..cb8fad3dc30366fb80ccfcf1ad4149773f4a7fec --- /dev/null +++ b/AppLcmProto3/proto3/models/file_storage_data.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vnf_virtual_link_desc.proto"; + +message FileStorageData { + + // Size of virtualised storage resource in GB. + float sizeOfStorage = 93418079; + + // The shared file system protocol (e.g. NFS, CIFS). + string fileSystemProtocol = 321732228; + + VnfVirtualLinkDesc intVirtualLinkDesc = 430588394; + +} diff --git a/AppLcmProto3/proto3/models/filter_type.proto b/AppLcmProto3/proto3/models/filter_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..e598a15813d9794f8f122295b7a1d998418b3f9d --- /dev/null +++ b/AppLcmProto3/proto3/models/filter_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum FilterType { + FLOW = 0; + PACKET = 1; +} diff --git a/AppLcmProto3/proto3/models/instantiate_app_request.proto b/AppLcmProto3/proto3/models/instantiate_app_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..096ca389410a08f0ec4ea58b207da0df856366ef --- /dev/null +++ b/AppLcmProto3/proto3/models/instantiate_app_request.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_term_cands_for_coord.proto"; +import public "models/location_constraints.proto"; +import public "models/mec_host_information.proto"; +import public "models/os_container_descriptor.proto"; +import public "models/vim_connection_info.proto"; +import public "models/virtual_compute_descriptor.proto"; +import public "models/virtual_storage_descriptor.proto"; + +message InstantiateAppRequest { + + LocationConstraints locationConstraints = 515491008; + + // Describes the information of selected host for the application instance. See note 2. + repeated MECHostInformation selectedMECHostInfo = 349742141; + + // Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links. This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2. + repeated VimConnectionInfo vimConnectionInfo = 92542822; + + // Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM to realize the application instance to be created. See note 1 and note 4. + repeated VirtualComputeDescriptor virtualComputeDescriptor = 284710718; + + // Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the same host and same network namespace. See note 1, note 4 and note 5. + repeated OsContainerDescriptor osContainerDescriptor = 528520781; + + // Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + repeated VirtualStorageDescriptor virtualStorageDescriptor = 346033281; + + // Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3. + repeated AppTermCandsForCoord appTermCandsForCoord = 96638979; + +} diff --git a/AppLcmProto3/proto3/models/instantiated_app_state.proto b/AppLcmProto3/proto3/models/instantiated_app_state.proto new file mode 100644 index 0000000000000000000000000000000000000000..1f9fe7c54f185c982fed653895062b5b0b65bee8 --- /dev/null +++ b/AppLcmProto3/proto3/models/instantiated_app_state.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/location_information.proto"; +import public "models/mcio_info.proto"; +import public "models/change_state_to.proto"; + +message InstantiatedAppState { + + ChangeStateTo operationalState = 102480931; + + LocationInformation appInstLocation = 476747557; + + // Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7. + repeated McioInfo mcioInfo = 156559373; + +} diff --git a/AppLcmProto3/proto3/models/instantiation_state.proto b/AppLcmProto3/proto3/models/instantiation_state.proto new file mode 100644 index 0000000000000000000000000000000000000000..4becf56920b7f57c1b4e526ae8db3a159f313ef9 --- /dev/null +++ b/AppLcmProto3/proto3/models/instantiation_state.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum InstantiationState { + NOT_INSTANTIATED_5 = 0; + INSTANTIATED = 1; +} diff --git a/AppLcmProto3/proto3/models/interface_descriptor.proto b/AppLcmProto3/proto3/models/interface_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..66f307f5486c7092f82dd0fe80a9c69b187aa151 --- /dev/null +++ b/AppLcmProto3/proto3/models/interface_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/interface_type.proto"; +import public "models/tunnel_info.proto"; + +message InterfaceDescriptor { + + // If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. + string dstIPAddress = 303696043; + + // If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. + string dstMACAddress = 439157945; + + InterfaceType interfaceType = 516041747; + + // If the interface type is MAC, the source address identifies the MAC address of the interface. + string srcMACAddress = 190916442; + + TunnelInfo tunnelInfo = 458558157; + +} diff --git a/AppLcmProto3/proto3/models/interface_type.proto b/AppLcmProto3/proto3/models/interface_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..d5ed2b58747a0889a83ea8f4e048451f4b5eef11 --- /dev/null +++ b/AppLcmProto3/proto3/models/interface_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum InterfaceType { + TUNNEL = 0; + MAC = 1; + IP = 2; +} diff --git a/AppLcmProto3/proto3/models/ip_address_type.proto b/AppLcmProto3/proto3/models/ip_address_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..a4d29a97a4559e238d8ec84ac257afdeebcfab86 --- /dev/null +++ b/AppLcmProto3/proto3/models/ip_address_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum IpAddressType { + V6 = 0; + V4 = 1; +} diff --git a/AppLcmProto3/proto3/models/ip_addresses.proto b/AppLcmProto3/proto3/models/ip_addresses.proto new file mode 100644 index 0000000000000000000000000000000000000000..502c8579265c1c48f65755816c8baec6e45228d1 --- /dev/null +++ b/AppLcmProto3/proto3/models/ip_addresses.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message IpAddresses { + + // Host portion of the address. + string host = 3208616; + + // Port portion of the address. + int32 port = 3446913; + +} diff --git a/AppLcmProto3/proto3/models/key_value_pairs.proto b/AppLcmProto3/proto3/models/key_value_pairs.proto new file mode 100644 index 0000000000000000000000000000000000000000..f4a65651097f919833ade3a943509be40ab9fec7 --- /dev/null +++ b/AppLcmProto3/proto3/models/key_value_pairs.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message KeyValuePairs { + + string key = 106079; + + string value = 111972721; + +} diff --git a/AppLcmProto3/proto3/models/latency_descriptor.proto b/AppLcmProto3/proto3/models/latency_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..d2aa4cdabb6e2cc70039c73d8278f342145f4153 --- /dev/null +++ b/AppLcmProto3/proto3/models/latency_descriptor.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LatencyDescriptor { + + // The value of the maximum latency in nano seconds tolerated by the MEC application. See note. + int32 maxLatency = 53618428; + +} diff --git a/AppLcmProto3/proto3/models/link_type.proto b/AppLcmProto3/proto3/models/link_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..9f828ad6b98f4801121d460a803cdb6d23d01fd3 --- /dev/null +++ b/AppLcmProto3/proto3/models/link_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LinkType { + + // URI referring to a resource + string href = 3211051; + +} diff --git a/AppLcmProto3/proto3/models/links.proto b/AppLcmProto3/proto3/models/links.proto new file mode 100644 index 0000000000000000000000000000000000000000..9dbb866a5df4fb4a3693e17b024647e1c113abd2 --- /dev/null +++ b/AppLcmProto3/proto3/models/links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message Links { + + LinkType subscription = 341203229; + +} diff --git a/AppLcmProto3/proto3/models/location_constraints.proto b/AppLcmProto3/proto3/models/location_constraints.proto new file mode 100644 index 0000000000000000000000000000000000000000..a2e416f60a0fc963ad8770c1449a4a023dff0f54 --- /dev/null +++ b/AppLcmProto3/proto3/models/location_constraints.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/civic_address_element.proto"; + +message LocationConstraints { + + // The two-letter ISO 3166 country code in capital letters. See note. + string countryCode = 403325279; + + repeated CivicAddressElement civicAddressElement = 359220466; + + // Geographic area. Shall be absent if the \"civicAddressElement\" attribute is present. The content of this attribute shall follow the provisions for the \"Polygon\" geometry object as defined in IETF RFC 7946 [8], for which the \"type\" member shall be set to the value \"Polygon\". See note. + string area = 3002509; + +} diff --git a/AppLcmProto3/proto3/models/location_information.proto b/AppLcmProto3/proto3/models/location_information.proto new file mode 100644 index 0000000000000000000000000000000000000000..f67cdae8206f64998ec7d299db6c743ba6c2fd52 --- /dev/null +++ b/AppLcmProto3/proto3/models/location_information.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/location_information_civic_address.proto"; + +message LocationInformation { + + // The two-letter ISO 3166 country code in capital letters where an instance is deployed. + string countryCode = 403325279; + + LocationInformationCivicAddress civicAddress = 531595607; + + // Geographical position (i.e. latitude and longitude) where an instance is deployed. The content of this attribute shall follow the provisions for the \"Point\" geometry object as defined in IETF RFC 7946 + string geographicalPosition = 79150125; + +} diff --git a/AppLcmProto3/proto3/models/location_information_civic_address.proto b/AppLcmProto3/proto3/models/location_information_civic_address.proto new file mode 100644 index 0000000000000000000000000000000000000000..8e8a111d160177bb955cb7d47b6439891d9de420 --- /dev/null +++ b/AppLcmProto3/proto3/models/location_information_civic_address.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/civic_address_element.proto"; + +message LocationInformationCivicAddress { + + // Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776. + repeated CivicAddressElement civicAddressElement = 359220466; + +} diff --git a/AppLcmProto3/proto3/models/logical_node_requirements.proto b/AppLcmProto3/proto3/models/logical_node_requirements.proto new file mode 100644 index 0000000000000000000000000000000000000000..25241719c3a266cf0016991c199cd9b2f9ef4dc7 --- /dev/null +++ b/AppLcmProto3/proto3/models/logical_node_requirements.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LogicalNodeRequirements { + + // Identifies this set of logical node requirements + string id = 3355; + + // The logical node-level compute, memory and I/O requirements. An array of key-value pairs that articulate the deployment requirements. This could include the number of CPU cores on this logical node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel via the libnuma library) or a requirement related to the association of an I/O device with the logical node. + repeated string logicalNodeRequirementDetail = 330382346; + +} diff --git a/AppLcmProto3/proto3/models/max_number_of_impacted_instances.proto b/AppLcmProto3/proto3/models/max_number_of_impacted_instances.proto new file mode 100644 index 0000000000000000000000000000000000000000..b1f24cffdc4ce06468d0a0a16d8eb2cc3e41d44d --- /dev/null +++ b/AppLcmProto3/proto3/models/max_number_of_impacted_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MaxNumberOfImpactedInstances { + + // Determines the size of the group for which the maxNumberOfImpactedInstances is specified. + int32 groupSize = 409275618; + + // The maximum number of instances that can be impacted simultaneously within the group of the specified size. + int32 maxNumberOfImpactedInstances = 28742796; + +} diff --git a/AppLcmProto3/proto3/models/mcio_info.proto b/AppLcmProto3/proto3/models/mcio_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..06c409e6a2ddfba2c889d30c17dbb1a9c9b74b69 --- /dev/null +++ b/AppLcmProto3/proto3/models/mcio_info.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message McioInfo { + + // Identifier of this MCIO, created by the CISM. + string mcioId = 5982347; + + // Human readable name of this MCIO. + string mcioName = 156696042; + + // Namespace of this MCIO + string mcioNamespace = 121080705; + + // Reference to the applicable Vdu information element in the VNFD. + string vduId = 112069378; + + // Identifier of the CISM managing this MCIO. + string cismId = 286436743; + + // The type of MCIO. See note 1. + string mcioType = 156897945; + + // Number of desired MCIO instances. + int32 desiredInstances = 333492988; + + // Number of available MCIO instances + int32 availableInstances = 45196727; + + // Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2 + string additionalInfo = 437426828; + +} diff --git a/AppLcmProto3/proto3/models/mec_host_information.proto b/AppLcmProto3/proto3/models/mec_host_information.proto new file mode 100644 index 0000000000000000000000000000000000000000..9a34bd35a0bf3444c50fe472b55b7575b711d67a --- /dev/null +++ b/AppLcmProto3/proto3/models/mec_host_information.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message MECHostInformation { + + KeyValuePairs hostId = 137743135; + + // Human-readable name of MEC host. + string hostName = 300756909; + +} diff --git a/AppLcmProto3/proto3/models/mep_information.proto b/AppLcmProto3/proto3/models/mep_information.proto new file mode 100644 index 0000000000000000000000000000000000000000..9f62dd3c928984ed94b4ffe71ffdb969b8287449 --- /dev/null +++ b/AppLcmProto3/proto3/models/mep_information.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MepInformation { + + // Deployment-specific identifier of MEC platform. + string mepId = 103782675; + + // Human-readable name of MEC platform + string mepName = 414181508; + +} diff --git a/AppLcmProto3/proto3/models/min_number_of_preserved_instances.proto b/AppLcmProto3/proto3/models/min_number_of_preserved_instances.proto new file mode 100644 index 0000000000000000000000000000000000000000..67c70e31335b27959c309fa70ae4ce7cad53fa2a --- /dev/null +++ b/AppLcmProto3/proto3/models/min_number_of_preserved_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MinNumberOfPreservedInstances { + + // When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited. + int32 groupSize = 409275618; + + // The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + int32 minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppLcmProto3/proto3/models/monitoring_parameter.proto b/AppLcmProto3/proto3/models/monitoring_parameter.proto new file mode 100644 index 0000000000000000000000000000000000000000..92a24da3a0034ea31d8abfe4b920f90c7a215a89 --- /dev/null +++ b/AppLcmProto3/proto3/models/monitoring_parameter.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MonitoringParameter { + + // Unique identifier of the monitoring parameter. + string monitoringParameterId = 369982780; + + // Human readable name of the monitoring parameter. + string name = 3373707; + + // Specifies the virtualised resource performance metric. + string performanceMetric = 26021379; + + // An attribute that describes the periodicity at which to collect the performance information. + string collectionPeriod = 316923396; + +} diff --git a/AppLcmProto3/proto3/models/nfvi_maintenance_info.proto b/AppLcmProto3/proto3/models/nfvi_maintenance_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..4e8822dd47b49ca03f91074d7b8530659aed264f --- /dev/null +++ b/AppLcmProto3/proto3/models/nfvi_maintenance_info.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/max_number_of_impacted_instances.proto"; +import public "models/min_number_of_preserved_instances.proto"; + +message NfviMaintenanceInfo { + + // The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + float impactNotificationLeadTime = 253443258; + + // When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact. + bool isImpactMitigationRequested = 86005185; + + // Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1. + enum SupportedMigrationTypeEnum { + NO_MIGRATION = 0; + OFFLINE_MIGRATION = 1; + LIVE_MIGRATION = 2; + } + + SupportedMigrationTypeEnum supportedMigrationType = 125270503; + + // Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. (see note 1) + float maxUndetectableInterruptionTime = 181342039; + + // When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.) + float minRecoveryTimeBetweenImpacts = 110146394; + + MaxNumberOfImpactedInstances maxNumberOfImpactedInstances = 28742796; + + MinNumberOfPreservedInstances minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppLcmProto3/proto3/models/notification_links.proto b/AppLcmProto3/proto3/models/notification_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..0bc68dc658d27dbf9bc967d523e31660bbbffcbe --- /dev/null +++ b/AppLcmProto3/proto3/models/notification_links.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message NotificationLinks { + + LinkType subscription = 341203229; + + LinkType appInstance = 229294552; + +} diff --git a/AppLcmProto3/proto3/models/o_auth2_info.proto b/AppLcmProto3/proto3/models/o_auth2_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..265860fe702f745d84c2685adfc80f2733e128d7 --- /dev/null +++ b/AppLcmProto3/proto3/models/o_auth2_info.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message OAuth2Info { + + // \"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \" + enum GrantTypesEnum { + SEE_DESCRIPTION = 0; + } + + GrantTypesEnum grantTypes = 303036606; + + // The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. + string tokenEndpoint = 117387951; + +} diff --git a/AppLcmProto3/proto3/models/object_storage_data.proto b/AppLcmProto3/proto3/models/object_storage_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..99a11dd0469570010e3b897e505889b134f48eb4 --- /dev/null +++ b/AppLcmProto3/proto3/models/object_storage_data.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ObjectStorageData { + + // Max size of virtualised storage resource in GB. + float maxSizeOfStorage = 515704161; + +} diff --git a/AppLcmProto3/proto3/models/operate_app_request.proto b/AppLcmProto3/proto3/models/operate_app_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..96bf92d74a43c5bb4f410393cd23eef7cab42e65 --- /dev/null +++ b/AppLcmProto3/proto3/models/operate_app_request.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/change_state_to.proto"; +import public "models/stop_type.proto"; + +message OperateAppRequest { + + ChangeStateTo changeStateTo = 345042206; + + // The time interval (in seconds) to wait for the application instance to be taken out of service during graceful stop, before stopping the application. See note 1 and note 2. + int32 gracefulStopTimeout = 275656969; + + StopType stopType = 104217183; + +} diff --git a/AppLcmProto3/proto3/models/operation_params.proto b/AppLcmProto3/proto3/models/operation_params.proto new file mode 100644 index 0000000000000000000000000000000000000000..6860a52c9c16cbdea67ac26a02388d792ab77797 --- /dev/null +++ b/AppLcmProto3/proto3/models/operation_params.proto @@ -0,0 +1,64 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_term_cands_for_coord.proto"; +import public "models/change_state_to.proto"; +import public "models/instantiate_app_request.proto"; +import public "models/location_constraints.proto"; +import public "models/mec_host_information.proto"; +import public "models/operate_app_request.proto"; +import public "models/os_container_descriptor.proto"; +import public "models/stop_type.proto"; +import public "models/terminate_app_request.proto"; +import public "models/vim_connection_info.proto"; +import public "models/virtual_compute_descriptor.proto"; +import public "models/virtual_storage_descriptor.proto"; + +message OperationParams { + + LocationConstraints locationConstraints = 515491008; + + // Describes the information of selected host for the application instance. See note 2. + repeated MECHostInformation selectedMECHostInfo = 349742141; + + // Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links. This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2. + repeated VimConnectionInfo vimConnectionInfo = 92542822; + + // Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM to realize the application instance to be created. See note 1 and note 4. + repeated VirtualComputeDescriptor virtualComputeDescriptor = 284710718; + + // Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the same host and same network namespace. See note 1, note 4 and note 5. + repeated OsContainerDescriptor osContainerDescriptor = 528520781; + + // Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + repeated VirtualStorageDescriptor virtualStorageDescriptor = 346033281; + + // Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3. + repeated AppTermCandsForCoord appTermCandsForCoord = 96638979; + + ChangeStateTo changeStateTo = 345042206; + + // The time interval (in seconds) to wait for the application instance to be taken out of service during graceful stop, before stopping the application. See note 1 and note 2. + int32 gracefulStopTimeout = 275656969; + + StopType stopType = 104217183; + + // This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting down the application and releasing the resources. The unit is seconds. If not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources. + int32 gracefulTerminationTimeout = 3307876; + + repeated StopType terminationType = 273262686; + +} diff --git a/AppLcmProto3/proto3/models/operation_state.proto b/AppLcmProto3/proto3/models/operation_state.proto new file mode 100644 index 0000000000000000000000000000000000000000..77e504204517b88fec3bda45b9bd1bed139d4635 --- /dev/null +++ b/AppLcmProto3/proto3/models/operation_state.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OperationState { + STARTING = 0; + PROCESSING = 1; + COMPLETED = 2; + FAILED = 3; + FAILED_TEMP = 4; +} diff --git a/AppLcmProto3/proto3/models/operation_types.proto b/AppLcmProto3/proto3/models/operation_types.proto new file mode 100644 index 0000000000000000000000000000000000000000..d60545c7a797a0af3e5f6aae23484a9612dfba7e --- /dev/null +++ b/AppLcmProto3/proto3/models/operation_types.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OperationTypes { + INSTANTIATE = 0; + OPERATE = 1; + TERMINATE = 2; +} diff --git a/AppLcmProto3/proto3/models/os_container_descriptor.proto b/AppLcmProto3/proto3/models/os_container_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..2cc11e80fc6090dde8ab4b420d4cf32445fe9378 --- /dev/null +++ b/AppLcmProto3/proto3/models/os_container_descriptor.proto @@ -0,0 +1,67 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/sw_image_desc.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message OsContainerDescriptor { + + // Unique identifier of this OsContainerDesc in the VNFD. + string osContainerDescId = 283861225; + + // Human readable name of this OS container. + string name = 3373707; + + // Human readable description of this OS container. + string description = 113933319; + + // Number of CPU resources requested for the container (e.g. in milli-CPU-s). + int32 requestedCpuResources = 220532760; + + // Amount of memory resources requested for the container (e.g. in MB). + float requestedMemoryResources = 382519511; + + // Size of ephemeral storage resources requested for the container (e.g. in GB). + float requestedEphemeralStorageResources = 155608615; + + // An array of key-value pairs of extended resources required by the container see note. + repeated KeyValuePairs extendedResourceRequests = 442743117; + + // Number of CPU resources the container can maximally use (e.g. in milli-CPU). + int32 cpuResourceLimit = 246845318; + + // Amount of memory resources the container can maximally use (e.g. in MB). + float memoryResourceLimit = 338185423; + + // Size of ephemeral storage resources the container can maximally use (e.g. in GB). + float ephemeralStorageResourceLimit = 179231441; + + // Specifies HugePages resources requested for the container, which the container can maximally use. + map hugePageResources = 34406550; + + VirtualCpuPinningData cpuPinningRequirements = 144271412; + + SwImageDesc swImageDesc = 202180474; + + // Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. + string bootData = 401855935; + + // Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameters = 161249200; + +} diff --git a/AppLcmProto3/proto3/models/problem_details.proto b/AppLcmProto3/proto3/models/problem_details.proto new file mode 100644 index 0000000000000000000000000000000000000000..1f11e75cdd2cfcf76ef9f91b5bc1a8c29666154c --- /dev/null +++ b/AppLcmProto3/proto3/models/problem_details.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ProblemDetails { + + // A human-readable explanation specific to this occurrence of the problem + string detail = 261482417; + + // A URI reference that identifies the specific occurrence of the problem + string instance = 18257046; + + // The HTTP status code for this occurrence of the problem + int32 status = 355610639; + + // A short, human-readable summary of the problem type + string title = 110371416; + + // A URI reference according to IETF RFC 3986 that identifies the problem type + string type = 3575610; + +} diff --git a/AppLcmProto3/proto3/models/qo_s.proto b/AppLcmProto3/proto3/models/qo_s.proto new file mode 100644 index 0000000000000000000000000000000000000000..07374cc8f343572c4a1086b623726b4ca709c3f0 --- /dev/null +++ b/AppLcmProto3/proto3/models/qo_s.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message QoS { + + // Latency of the VL in milliseconds. + float latency = 46576386; + + // Packet delay variation of the VL in milliseconds. + float packetDelayVariation = 20616827; + + // Packet loss ratio of the VL in percentage. + float packetLossRatio = 63177475; + +} diff --git a/AppLcmProto3/proto3/models/requested_additional_capability_data.proto b/AppLcmProto3/proto3/models/requested_additional_capability_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..3ae93e744ee889f34935cd283f392b1966c956d7 --- /dev/null +++ b/AppLcmProto3/proto3/models/requested_additional_capability_data.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message RequestedAdditionalCapabilityData { + + // Specifies a requested additional capability for the VDU + string requestedAdditionalCapabilityName = 251694426; + + // Indicates whether the requested additional capability is mandatory for successful operation + bool supportMandatory = 89498316; + + // Specifies the minimum version of the requested additional capability + string minRequestedAdditionalCapabilityVersion = 367700901; + + // Specifies the preferred version of the requested additional capability + string preferredRequestedAdditionalCapabilityVersion = 210210575; + + // Specifies specific attributes, dependent on the requested additional capability type. + repeated KeyValuePairs targetPerformanceParameters = 226256172; + +} diff --git a/AppLcmProto3/proto3/models/security_info.proto b/AppLcmProto3/proto3/models/security_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..8d8714dbbb69869d734cd4ddb5df2efba8a8ba04 --- /dev/null +++ b/AppLcmProto3/proto3/models/security_info.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/o_auth2_info.proto"; + +message SecurityInfo { + + OAuth2Info oAuth2Info = 137361497; + + // 'Extensions for alternative transport mechanisms. These extensions depend on the actual transport, and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).' + repeated string Left_ParenthesisextensionsRight_Parenthesis = 403455488; + +} diff --git a/AppLcmProto3/proto3/models/serializer_type.proto b/AppLcmProto3/proto3/models/serializer_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..7cbd2cdc35f5179ae2ebe9255dd1e757565117e6 --- /dev/null +++ b/AppLcmProto3/proto3/models/serializer_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum SerializerType { + JSON = 0; + XML = 1; + PROTOBUF3 = 2; +} diff --git a/AppLcmProto3/proto3/models/service_dependency.proto b/AppLcmProto3/proto3/models/service_dependency.proto new file mode 100644 index 0000000000000000000000000000000000000000..77abb53ba6d7d63c61ca3fab74a19b61a0396b1d --- /dev/null +++ b/AppLcmProto3/proto3/models/service_dependency.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transport_dependency.proto"; + +message ServiceDependency { + + // Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage. + repeated string requestedPermissions = 50377785; + + CategoryRef serCategory = 286031232; + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + // Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + repeated TransportDependency serTransportDependencies = 527834511; + + // The version of the service. + string version = 351608024; + +} diff --git a/AppLcmProto3/proto3/models/service_descriptor.proto b/AppLcmProto3/proto3/models/service_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..8974844ba39d38a2fb8289a4823fb57e2be8aad6 --- /dev/null +++ b/AppLcmProto3/proto3/models/service_descriptor.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transports_supported.proto"; + +message ServiceDescriptor { + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + CategoryRef serCategory = 286031232; + + // The version of the service. + string version = 351608024; + + repeated TransportsSupported transportsSupported = 392389276; + +} diff --git a/AppLcmProto3/proto3/models/stop_type.proto b/AppLcmProto3/proto3/models/stop_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..856de94adf0298c09de7090ebf9de79b83c9461c --- /dev/null +++ b/AppLcmProto3/proto3/models/stop_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum StopType { + FORCEFUL = 0; + GRACEFUL = 1; +} diff --git a/AppLcmProto3/proto3/models/sw_image_desc.proto b/AppLcmProto3/proto3/models/sw_image_desc.proto new file mode 100644 index 0000000000000000000000000000000000000000..ebffd6ee572daa2588e268288f034a3da3677f42 --- /dev/null +++ b/AppLcmProto3/proto3/models/sw_image_desc.proto @@ -0,0 +1,55 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum_data.proto"; + +message SwImageDesc { + + // The identifier of this software image. + string id = 3355; + + // The name of this software image. + string name = 3373707; + + // The version of this software image. + string version = 351608024; + + ChecksumData checksum = 463166533; + + // The container format describes the container file format in which software image is provided. + string containerFormat = 35720152; + + // The disk format of a software image is the format of the underlying disk image. See note 1. + string diskFormat = 521631759; + + // The minimal disk size requirement for this software image. The value of the \"size of storage\" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1. + float minDisk = 526561040; + + // The minimal RAM requirement for this software image. The value of the \"size\" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2. + float minRam = 319382; + + // The size of this software image file. See note 3. + float size = 3530753; + + SwImageDesc swImage = 223016620; + + // Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used. + string operatingSystem = 102924594; + + // Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + repeated string supportedVirtualisationEnvironment = 306169277; + +} diff --git a/AppLcmProto3/proto3/models/terminate_app_request.proto b/AppLcmProto3/proto3/models/terminate_app_request.proto new file mode 100644 index 0000000000000000000000000000000000000000..dc0207d529816ea14bc386699d9bd4a065afd443 --- /dev/null +++ b/AppLcmProto3/proto3/models/terminate_app_request.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/stop_type.proto"; + +message TerminateAppRequest { + + // This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting down the application and releasing the resources. The unit is seconds. If not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources. + int32 gracefulTerminationTimeout = 3307876; + + StopType terminationType = 273262686; + +} diff --git a/AppLcmProto3/proto3/models/time_stamp.proto b/AppLcmProto3/proto3/models/time_stamp.proto new file mode 100644 index 0000000000000000000000000000000000000000..6286f725806a347a8276ce8b55749a59fa0e3091 --- /dev/null +++ b/AppLcmProto3/proto3/models/time_stamp.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TimeStamp { + + // The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 nanoSeconds = 46708012; + + // The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 seconds = 359484034; + +} diff --git a/AppLcmProto3/proto3/models/traffic_filter.proto b/AppLcmProto3/proto3/models/traffic_filter.proto new file mode 100644 index 0000000000000000000000000000000000000000..a1493f2938e9e1a8fb6bad13d43bac016df69271 --- /dev/null +++ b/AppLcmProto3/proto3/models/traffic_filter.proto @@ -0,0 +1,63 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TrafficFilter { + + // Used to match all IPv4 packets that have the same DSCP. + int32 dSCP = 3061020; + + // A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. + repeated string dstAddress = 407279216; + + // A port or a range of ports. + repeated string dstPort = 347416553; + + // Used for GTP tunnel based traffic rule. + repeated string dstTunnelPort = 320657582; + + // Specify the protocol of the traffic filter. + repeated string protocol = 452292969; + + // Used to match all packets that have the same QCI. + int32 qCI = 110743; + + // An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. + repeated string srcAddress = 240897392; + + // A port or a range of ports. + repeated string srcPort = 343000958; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelAddress = 86899993; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelPort = 32028174; + + // Used to match all IPv6 packets that have the same TC. + int32 tC = 3663; + + // Used for tag based traffic rule. + repeated string tag = 114586; + + // Used for GTP tunnel based traffic rule. + repeated string tgtTunnelAddress = 5196918; + + repeated string uri = 116076; + + repeated string packetLabel = 513464140; + +} diff --git a/AppLcmProto3/proto3/models/traffic_rule_descriptor.proto b/AppLcmProto3/proto3/models/traffic_rule_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..d9ea2719b69b5316450759ec6f04c9187cca703a --- /dev/null +++ b/AppLcmProto3/proto3/models/traffic_rule_descriptor.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/action.proto"; +import public "models/filter_type.proto"; +import public "models/interface_descriptor.proto"; +import public "models/traffic_filter.proto"; + +message TrafficRuleDescriptor { + + Action action = 349209036; + + // Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. + repeated InterfaceDescriptor dstInterface = 181384437; + + FilterType filterType = 479309104; + + // Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note 1. + int32 priority = 91719262; + + // The filter used to identify specific flow/packets that need to be handled by the MEC host. + repeated TrafficFilter trafficFilter = 511989803; + + // Identifies the traffic rule. + string trafficRuleId = 157373036; + +} diff --git a/AppLcmProto3/proto3/models/transport_dependency.proto b/AppLcmProto3/proto3/models/transport_dependency.proto new file mode 100644 index 0000000000000000000000000000000000000000..0377ead13d709be2b0a8499cc6a59830e0970870 --- /dev/null +++ b/AppLcmProto3/proto3/models/transport_dependency.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportDependency { + + // Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + repeated string labels = 36675587; + + // Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. + repeated SerializerType serializers = 283951841; + + TransportDescriptor transport = 516093738; + +} diff --git a/AppLcmProto3/proto3/models/transport_descriptor.proto b/AppLcmProto3/proto3/models/transport_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..17ecc540ef0673d8379891bfbbed8afb4c9f274f --- /dev/null +++ b/AppLcmProto3/proto3/models/transport_descriptor.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/security_info.proto"; + +message TransportDescriptor { + + // The name of this transport. + string name = 3373707; + + // Human-readable description of this transport. + string description = 113933319; + + // The name of the protocol used. Shall be set to HTTP for a REST API. + string protocol = 452292969; + + SecurityInfo security = 412251969; + + string type = 3575610; + + // The version of the protocol used. + string version = 351608024; + + // Additional implementation specific details of the transport. + string implSpecificInfo = 109027520; + +} diff --git a/AppLcmProto3/proto3/models/transports_supported.proto b/AppLcmProto3/proto3/models/transports_supported.proto new file mode 100644 index 0000000000000000000000000000000000000000..6bba1509bca1133c5f55a83a4bf849a9636574ee --- /dev/null +++ b/AppLcmProto3/proto3/models/transports_supported.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportsSupported { + + TransportDescriptor transport = 516093738; + + // Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011. + repeated SerializerType serializers = 283951841; + +} diff --git a/AppLcmProto3/proto3/models/tunnel_info.proto b/AppLcmProto3/proto3/models/tunnel_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..79bbe4f5b214e41d8ef05a84eb9f77271eb14f30 --- /dev/null +++ b/AppLcmProto3/proto3/models/tunnel_info.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/tunnel_type.proto"; + +message TunnelInfo { + + // Destination address of the tunnel. + string tunnelDstAddress = 430153977; + + string tunnelSpecificData = 160961404; + + // Source address of the tunnel. + string tunnelSrcAddress = 263772153; + + TunnelType tunnelType = 458219585; + +} diff --git a/AppLcmProto3/proto3/models/tunnel_type.proto b/AppLcmProto3/proto3/models/tunnel_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..ee94e01dd9a0c6defaf3ef1befe83f6a623b763e --- /dev/null +++ b/AppLcmProto3/proto3/models/tunnel_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum TunnelType { + GTP_U = 0; + GRE = 1; +} diff --git a/AppLcmProto3/proto3/models/user_context_transfer_capability.proto b/AppLcmProto3/proto3/models/user_context_transfer_capability.proto new file mode 100644 index 0000000000000000000000000000000000000000..83136384350bf5d1cb19804ae3221e17e9760b0b --- /dev/null +++ b/AppLcmProto3/proto3/models/user_context_transfer_capability.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message UserContextTransferCapability { + + bool statefulApplication = 286608798; + + bool userContextTransferSupport = 348003682; + +} diff --git a/AppLcmProto3/proto3/models/vim_connection_info.proto b/AppLcmProto3/proto3/models/vim_connection_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..99178fb69bba04f832cc9ff4ac07a16d2e38ca7b --- /dev/null +++ b/AppLcmProto3/proto3/models/vim_connection_info.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message VimConnectionInfo { + + KeyValuePairs accessInfo = 68600784; + + KeyValuePairs extra = 96965648; + + // The identifier of the VIM Connection. This identifier is managed by the MEO. + string id = 3355; + + KeyValuePairs interfaceInfo = 515703175; + + // The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise. + string vimId = 112210645; + + // Discriminator for the different types of the VIM information.The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available. + string vimType = 460598900; + +} diff --git a/AppLcmProto3/proto3/models/virtual_compute_descriptor.proto b/AppLcmProto3/proto3/models/virtual_compute_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..283a6480fd10d96af5ea03e29f8954fa783141bf --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_compute_descriptor.proto @@ -0,0 +1,44 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/logical_node_requirements.proto"; +import public "models/requested_additional_capability_data.proto"; +import public "models/virtual_cpu_data.proto"; +import public "models/virtual_memory_data.proto"; + +message VirtualComputeDescriptor { + + // Unique identifier of this VirtualComputeDesc in the VNFD. + string virtualComputeDescId = 124849833; + + // The logical node requirements. + repeated LogicalNodeRequirements logicalNode = 534614443; + + // Specifies requirements for additional capabilities. These may be for a range of purposes. One example is acceleration related capabilities. See clause 7.1.9.5. + repeated RequestedAdditionalCapabilityData requestAdditionalCapabilities = 387050772; + + // Specifies compute requirements. + repeated string computeRequirements = 117445017; + + VirtualMemoryData virtualMemory = 289543148; + + VirtualCpuData virtualCpu = 297044640; + + // The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3. + repeated BlockStorageData virtualDisk = 455269561; + +} diff --git a/AppLcmProto3/proto3/models/virtual_cpu_data.proto b/AppLcmProto3/proto3/models/virtual_cpu_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..7fe412602891bc4d9e143c7ae433b96a476ccd39 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_cpu_data.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message VirtualCpuData { + + // CPU architecture type. Examples are x86, ARM. + string cpuArchitecture = 291765478; + + // Number of virtual CPUs. + int32 numVirtualCpu = 241427141; + + // Minimum virtual CPU clock rate (e.g. in MHz). + float virtualCpuClock = 190675825; + + // The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + string virtualCpuOversubscriptionPolicy = 309214339; + + // Array of key-value pair requirements on the Compute (CPU) for the VDU. + repeated KeyValuePairs vduCpuRequirements = 366499794; + + VirtualCpuPinningData virtualCpuPinning = 343263854; + +} diff --git a/AppLcmProto3/proto3/models/virtual_cpu_pinning_data.proto b/AppLcmProto3/proto3/models/virtual_cpu_pinning_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..4eec3665d5157dd2d4751898b01c108e33fd2652 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_cpu_pinning_data.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message VirtualCpuPinningData { + + // Indicates the policy for CPU pinning. + enum VirtualCpuPinningPolicyEnum { + STATIC = 0; + DYNAMIC = 1; + } + + VirtualCpuPinningPolicyEnum virtualCpuPinningPolicy = 211166530; + + // List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of \"STATIC\" virtualCpuPinningPolicy. + repeated string virtualCpuPinningRule = 379174793; + +} diff --git a/AppLcmProto3/proto3/models/virtual_link_desc_flavour.proto b/AppLcmProto3/proto3/models/virtual_link_desc_flavour.proto new file mode 100644 index 0000000000000000000000000000000000000000..929efc8ae20c80f964e502829d0cb07ba7146ed8 --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_link_desc_flavour.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/qo_s.proto"; + +message VirtualLinkDescFlavour { + + // Identifies a flavour within a VnfVirtualLinkDesc. + string flavourId = 517043477; + + QoS qos = 112149; + +} diff --git a/AppLcmProto3/proto3/models/virtual_memory_data.proto b/AppLcmProto3/proto3/models/virtual_memory_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..3b0e775f8cfa0b4de84854026c637edc4a629dec --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_memory_data.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message VirtualMemoryData { + + // Amount of virtual memory in MB. + float virtualMemSize = 385060331; + + // The memory core oversubscription policy in terms of virtual memory to physical memory on the platform. The cardinality can be 0 during the allocation request, if no particular value is requested. + string virtualMemOversubscriptionPolicy = 237578262; + + // Array of key-value pair requirements on the memory for the VDU. + repeated KeyValuePairs vduMemRequirements = 271933317; + + // Specifies the memory allocation to be cognisant of the relevant process/core allocation. + bool numaEnabled = 9627943; + + // Specifies requirements on the huge pages resources for the virtual memory. + string hugePagesRequirements = 124971785; + +} diff --git a/AppLcmProto3/proto3/models/virtual_storage_descriptor.proto b/AppLcmProto3/proto3/models/virtual_storage_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..0a7bbea0a4aaa0a74a42d24e6260421d42e7de0f --- /dev/null +++ b/AppLcmProto3/proto3/models/virtual_storage_descriptor.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/file_storage_data.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/object_storage_data.proto"; + +message VirtualStorageDescriptor { + + // Unique identifier of this VirtualStorageDesc in the VNFD. + string id = 3355; + + // Type of virtualised storage resource. + enum TypeOfStorageEnum { + BLOCK = 0; + OBJECT = 1; + FILE = 2; + } + + TypeOfStorageEnum typeOfStorage = 320663180; + + BlockStorageData blockStorageData = 376673800; + + ObjectStorageData objectStorageData = 502151164; + + FileStorageData fileStorageData = 500145579; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Indicates whether the virtual storage resource shall be instantiated per VNFC instance. + bool perVnfcInstance = 58016487; + +} diff --git a/AppLcmProto3/proto3/models/vnf_virtual_link_desc.proto b/AppLcmProto3/proto3/models/vnf_virtual_link_desc.proto new file mode 100644 index 0000000000000000000000000000000000000000..8abba0659539bfd0bdaed61129d6005c048c98dd --- /dev/null +++ b/AppLcmProto3/proto3/models/vnf_virtual_link_desc.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/connectivity_type.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/virtual_link_desc_flavour.proto"; + +message VnfVirtualLinkDesc { + + // Unique identifier of this internal VLD in VNFD. + string virtualLinkDescId = 447465875; + + // Describes a specific flavour of the VL with specific bitrate requirements. + repeated VirtualLinkDescFlavour virtualLinkDescFlavour = 37410619; + + ConnectivityType connectivityType = 453097874; + + // Specifies test access facilities expected on the VL. + repeated string testAccess = 122531992; + + // Provides human-readable information on the purpose of the VL. + string description = 113933319; + + // Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameter = 254574658; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + enum ExternallyManagedEnum { + REQUIRED = 0; + ALLOWED = 1; + } + + ExternallyManagedEnum externallyManaged = 51289628; + +} diff --git a/AppLcmProto3/proto3/services/app_lcm_notifications_service.proto b/AppLcmProto3/proto3/services/app_lcm_notifications_service.proto new file mode 100644 index 0000000000000000000000000000000000000000..b56e067024a4962c90c6527f3b0e6179dc366aa2 --- /dev/null +++ b/AppLcmProto3/proto3/services/app_lcm_notifications_service.proto @@ -0,0 +1,74 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.applcmnotificationsservice; + +import "google/protobuf/empty.proto"; +import public "models/app_inst_id_creation_subscription_info.proto"; +import public "models/app_inst_id_creation_subscription_request.proto"; +import public "models/app_inst_id_deletion_subscription_info.proto"; +import public "models/app_inst_id_deletion_subscription_request.proto"; +import public "models/app_inst_notification.proto"; +import public "models/app_inst_subscription_info.proto"; +import public "models/app_inst_subscription_request.proto"; +import public "models/app_instance_identifier_creation_notification.proto"; +import public "models/app_instance_identifier_deletion_notification.proto"; +import public "models/app_instance_subscription_link_list.proto"; +import public "models/app_instance_subscription_type.proto"; +import public "models/app_lcm_op_occ_notification.proto"; +import public "models/app_lcm_op_occ_subscription_info.proto"; +import public "models/app_lcm_op_occ_subscription_request.proto"; +import public "models/problem_details.proto"; + +service AppLcmNotificationsService { + rpc AppInstNotificationPOST (AppInstNotificationPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmSubscriptionsGET (AppLcmSubscriptionsGETRequest) returns (AppInstanceSubscriptionLinkList); + + rpc AppLcmSubscriptionsPOST (AppLcmSubscriptionsPOSTRequest) returns (AppInstSubscriptionRequest); + + rpc IndividualSubscriptionDELETE (IndividualSubscriptionDELETERequest) returns (google.protobuf.Empty); + + rpc IndividualSubscriptionGET (IndividualSubscriptionGETRequest) returns (AppInstSubscriptionInfo); + +} + +message AppInstNotificationPOSTRequest { + AppInstNotification appInstNotification = 1; + +} + +message AppLcmSubscriptionsGETRequest { + // Query parameter to filter on a specific subscription type. + AppInstanceSubscriptionType subscriptionType = 1; + +} + +message AppLcmSubscriptionsPOSTRequest { + AppInstSubscriptionRequest appInstSubscriptionRequest = 1; + +} + +message IndividualSubscriptionDELETERequest { + // Represents an individual subscription to notification related to an application instance + string subscriptionId = 1; + +} + +message IndividualSubscriptionGETRequest { + // Represents an individual subscription to notification related to an application instance + AppInstSubscriptionInfo appInstSubscriptionInfo = 1; + +} + diff --git a/AppLcmProto3/proto3/services/app_lcm_service.proto b/AppLcmProto3/proto3/services/app_lcm_service.proto new file mode 100644 index 0000000000000000000000000000000000000000..c1603a54358eba57be5869aaf8dbf691f1aa50de --- /dev/null +++ b/AppLcmProto3/proto3/services/app_lcm_service.proto @@ -0,0 +1,163 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.applcmservice; + +import "google/protobuf/empty.proto"; +import public "models/app_instance_info.proto"; +import public "models/app_lcm_op_occ.proto"; +import public "models/config_platform_for_app_request.proto"; +import public "models/create_app_instance_request.proto"; +import public "models/instantiate_app_request.proto"; +import public "models/operate_app_request.proto"; +import public "models/problem_details.proto"; +import public "models/terminate_app_request.proto"; + +service AppLcmService { + rpc AppInstanceGET (AppInstanceGETRequest) returns (AppInstanceGETResponse); + + rpc AppInstanceIdDELETE (AppInstanceIdDELETERequest) returns (google.protobuf.Empty); + + rpc AppInstanceIdGET (AppInstanceIdGETRequest) returns (AppInstanceInfo); + + rpc AppInstancePOST (AppInstancePOSTRequest) returns (AppInstanceInfo); + + rpc AppInstancesConfigPlatformPOST (AppInstancesConfigPlatformPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmCancelPOST (AppLcmCancelPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmFailPOST (AppLcmFailPOSTRequest) returns (AppLcmOpOcc); + + rpc AppLcmInstanciatePOST (AppLcmInstanciatePOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmOpOccsGET (AppLcmOpOccsGETRequest) returns (AppLcmOpOccsGETResponse); + + rpc AppLcmOpOccsbyIdGET (AppLcmOpOccsbyIdGETRequest) returns (AppLcmOpOcc); + + rpc AppLcmOperatePOST (AppLcmOperatePOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmRetryPOST (AppLcmRetryPOSTRequest) returns (google.protobuf.Empty); + + rpc AppLcmTerminatePOST (AppLcmTerminatePOSTRequest) returns (google.protobuf.Empty); + +} + +message AppInstanceGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 3; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 5; + +} + +message AppInstanceGETResponse { + repeated AppInstanceInfo data = 1; +} + +message AppInstanceIdDELETERequest { + // Identifier of an individual application instance + string appInstanceId = 1; + +} + +message AppInstanceIdGETRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + +} + +message AppInstancePOSTRequest { + // The POST method is used to create an application instance resource. + CreateAppInstanceRequest createAppInstanceRequest = 1; + +} + +message AppInstancesConfigPlatformPOSTRequest { + // The identifier of the application instance. + string appInstanceId = 1; + // The message content in the request contains the information necessary to provide configuration information in AppD + ConfigPlatformForAppRequest configPlatformForAppRequest = 2; + +} + +message AppLcmCancelPOSTRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + string body = 2; + +} + +message AppLcmFailPOSTRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + +} + +message AppLcmInstanciatePOSTRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + InstantiateAppRequest instantiateAppRequest = 2; + +} + +message AppLcmOpOccsGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppLcmOpOcc to be excluded from the response. + string fields = 3; + // Complex attributes of AppLcmOpOcc to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppLcmOpOcc from the response. + string excludeDefault = 5; + +} + +message AppLcmOpOccsGETResponse { + repeated AppLcmOpOcc data = 1; +} + +message AppLcmOpOccsbyIdGETRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + +} + +message AppLcmOperatePOSTRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + OperateAppRequest operateAppRequest = 2; + +} + +message AppLcmRetryPOSTRequest { + // Identifies an individual application LCM operation occurrence + string appLcmOpOccId = 1; + +} + +message AppLcmTerminatePOSTRequest { + // Identifier of an individual application instance + string appInstanceId = 1; + TerminateAppRequest terminateAppRequest = 2; + +} + diff --git a/AppPkgMgmtProto3/proto3/.openapi-generator-ignore b/AppPkgMgmtProto3/proto3/.openapi-generator-ignore new file mode 100644 index 0000000000000000000000000000000000000000..7484ee590a3894506cf063799b885428f95a71be --- /dev/null +++ b/AppPkgMgmtProto3/proto3/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/AppPkgMgmtProto3/proto3/.openapi-generator/FILES b/AppPkgMgmtProto3/proto3/.openapi-generator/FILES new file mode 100644 index 0000000000000000000000000000000000000000..49b63b7400621265afff0f93476899233867f32f --- /dev/null +++ b/AppPkgMgmtProto3/proto3/.openapi-generator/FILES @@ -0,0 +1,84 @@ +.openapi-generator-ignore +README.md +models/action.proto +models/additional_service_data.proto +models/app_d.proto +models/app_external_cpd.proto +models/app_network_policy.proto +models/app_network_policy_steered_network.proto +models/app_pkg_filter.proto +models/app_pkg_info.proto +models/app_pkg_info_links.proto +models/app_pkg_info_modifications.proto +models/app_pkg_notification.proto +models/app_pkg_notification_links.proto +models/app_pkg_notification_type.proto +models/app_pkg_subscription.proto +models/app_pkg_subscription_info.proto +models/app_pkg_subscription_info_links.proto +models/app_pkg_subscription_link_list.proto +models/app_pkg_subscription_link_list_links.proto +models/app_pkg_subscription_type.proto +models/block_storage_data.proto +models/category_ref.proto +models/change_app_instance_state_op_config.proto +models/checksum.proto +models/checksum_data.proto +models/connectivity_type.proto +models/create_app_pkg.proto +models/dns_rule_descriptor.proto +models/feature_dependency.proto +models/file_storage_data.proto +models/filter_type.proto +models/interface_descriptor.proto +models/interface_type.proto +models/ip_address_type.proto +models/key_value_pairs.proto +models/latency_descriptor.proto +models/link_type.proto +models/logical_node_requirements.proto +models/max_number_of_impacted_instances.proto +models/mcio_constraint_params.proto +models/mcio_identification_data.proto +models/min_number_of_preserved_instances.proto +models/monitoring_parameter.proto +models/nfvi_maintenance_info.proto +models/o_auth2_info.proto +models/object_storage_data.proto +models/onboarding_state.proto +models/operational_state.proto +models/os_container_descriptor.proto +models/problem_details.proto +models/qo_s.proto +models/requested_additional_capability_data.proto +models/security_info.proto +models/serializer_type.proto +models/service_dependency.proto +models/service_descriptor.proto +models/service_port_data.proto +models/subscriptions_app_pkg_subscription.proto +models/sw_image_desc.proto +models/sw_image_descriptor.proto +models/terminate_app_instance_op_config.proto +models/time_stamp.proto +models/traffic_filter.proto +models/traffic_rule_descriptor.proto +models/transport_dependency.proto +models/transport_descriptor.proto +models/transport_types.proto +models/transports_supported.proto +models/tunnel_info.proto +models/tunnel_type.proto +models/usage_state.proto +models/user_context_transfer_capability.proto +models/version.proto +models/virtual_compute_descriptor.proto +models/virtual_cpu_data.proto +models/virtual_cpu_pinning_data.proto +models/virtual_link_desc_flavour.proto +models/virtual_memory_data.proto +models/virtual_network_interface_requirements.proto +models/virtual_storage_descriptor.proto +models/vnf_virtual_link_desc.proto +services/app_pkgm_notifications_service.proto +services/app_pkgm_service.proto diff --git a/AppPkgMgmtProto3/proto3/.openapi-generator/VERSION b/AppPkgMgmtProto3/proto3/.openapi-generator/VERSION new file mode 100644 index 0000000000000000000000000000000000000000..1e20ec35c6422c05be73f5929fbac4c67c304fd2 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/.openapi-generator/VERSION @@ -0,0 +1 @@ +5.4.0 \ No newline at end of file diff --git a/AppPkgMgmtProto3/proto3/README.md b/AppPkgMgmtProto3/proto3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..985db92b716da919c78cf533fa62d5e12dd85ede --- /dev/null +++ b/AppPkgMgmtProto3/proto3/README.md @@ -0,0 +1,115 @@ +# gPRC for MEC010-2 + +The ETSI MEC ISG Application Package Management API described using OpenAPI. + +## Overview +These files were generated by the [OpenAPI Generator](https://openapi-generator.tech) project. + +- API version: 3.1.1 +- Package version: +- Build package: org.openapitools.codegen.languages.ProtobufSchemaCodegen +For more information, please visit [https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api](https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api) + +## Usage + +Below are some usage examples for Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following command from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + + The above command will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` + + The above command will generate service files for the Application Package Management API, containing: + - Python data models used in the Application Package Management API + - Classes and functions needed for the supported HTTP methods in the Application Package Management API + +### Go + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.apppkgmgmtservice";` in .proto files like this: + + ```Go + syntax = "proto3"; + + package mec0102.services.apppkgmgmtservice; + + option go_package = "./mec0102.services.apppkgmgmtservice"; + + import public "models/.proto"; + ``` + +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/models/* -I./AppPkgMgmtProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppPkgMgmtProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` file will contain the stubs for the methods defined in the `.proto` file. + +### Ruby + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following command to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + + Run the following command to generate services files, containing stub and service classes for the endpoints and methods defined in Application Package Management API. + + ```sh + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` \ No newline at end of file diff --git a/AppPkgMgmtProto3/proto3/models/action.proto b/AppPkgMgmtProto3/proto3/models/action.proto new file mode 100644 index 0000000000000000000000000000000000000000..cf7c167c80b540fe73afaa0845ff1f456e71a579 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/action.proto @@ -0,0 +1,25 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum Action { + DROP = 0; + FORWARD_DECAPSULATED = 1; + FORWARD_ENCAPSULATED = 2; + PASSTHROUGH = 3; + DUPLICATE_DECAPSULATED = 4; + DUPLICATE_ENCAPSULATED = 5; +} diff --git a/AppPkgMgmtProto3/proto3/models/additional_service_data.proto b/AppPkgMgmtProto3/proto3/models/additional_service_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..97eaab42b7060c25391dea7a73266b7c65f30e3b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/additional_service_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/service_port_data.proto"; + +message AdditionalServiceData { + + repeated ServicePortData portData = 191026124; + + // Service matching information exposed by the VirtualCp. See note. + string serviceData = 318257156; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_d.proto b/AppPkgMgmtProto3/proto3/models/app_d.proto new file mode 100644 index 0000000000000000000000000000000000000000..ae31b010a5df838c3f86dbcaf37e36719e32ce5d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_d.proto @@ -0,0 +1,128 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_external_cpd.proto"; +import public "models/app_network_policy.proto"; +import public "models/change_app_instance_state_op_config.proto"; +import public "models/dns_rule_descriptor.proto"; +import public "models/feature_dependency.proto"; +import public "models/latency_descriptor.proto"; +import public "models/logical_node_requirements.proto"; +import public "models/mcio_constraint_params.proto"; +import public "models/mcio_identification_data.proto"; +import public "models/os_container_descriptor.proto"; +import public "models/requested_additional_capability_data.proto"; +import public "models/service_dependency.proto"; +import public "models/service_descriptor.proto"; +import public "models/sw_image_descriptor.proto"; +import public "models/terminate_app_instance_op_config.proto"; +import public "models/traffic_rule_descriptor.proto"; +import public "models/transport_dependency.proto"; +import public "models/user_context_transfer_capability.proto"; +import public "models/virtual_compute_descriptor.proto"; +import public "models/virtual_storage_descriptor.proto"; + +message AppD { + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1. + string appDId = 337359172; + + // Describes DNS rules the MEC application requires. + repeated DNSRuleDescriptor appDNSRule = 390231655; + + // The logical node requirements. See note 6 and note 7. + repeated LogicalNodeRequirements logicalNode = 534614443; + + // Defines descriptors of virtual storage resources to be used by the MEC application. + repeated VirtualStorageDescriptor virtualStorageDescriptor = 346033281; + + UserContextTransferCapability userContextTransferCapability = 306228764; + + AppNetworkPolicy appNetworkPolicy = 351140772; + + // Specifies requirements for additional capabilities. These can be for a range of purposes. One example is acceleration related capabilities. See note 6 and note 7. + repeated RequestedAdditionalCapabilityData requestAdditionalCapabilities = 387050772; + + // The parameter names for constraints expected to be assigned to MCIOs realizing this application. For the associated semantical context of the values, refer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1]. See note 7. + repeated McioConstraintParams mcioConstraintParams = 119651105; + + // Identifies the version of the application descriptor. + string appDVersion = 414673174; + + // Human readable description of the MEC application. + string appDescription = 145998621; + + // Describes external interface(s) exposed by this MEC application. See note 4. + repeated AppExternalCpd appExtCpd = 29018425; + + // Describes features a MEC application may use if available. + repeated FeatureDependency appFeatureOptional = 325807127; + + // Describes features a MEC application requires to run. + repeated FeatureDependency appFeatureRequired = 11684950; + + // Human readable name for the MEC application. + string appInfoName = 388790683; + + LatencyDescriptor appLatency = 12186527; + + // Name to identify the MEC application. + string appName = 257265589; + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // Describes services a MEC application may use if available. + repeated ServiceDependency appServiceOptional = 513837271; + + // Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. + repeated ServiceDescriptor appServiceProduced = 125963514; + + // Describes services a MEC application requires to run. + repeated ServiceDependency appServiceRequired = 199715094; + + // Identifies the version of software of the MEC application. + string appSoftVersion = 462216301; + + // Identifies the MCIOP in the application package, used in containerized workload management, when the application is realized by a set of OS containers. See note 7. + string mciopId = 351454960; + + // Name and type of the Managed Container Infrastructure Object (MCIO) that realizes this application. It allows the VNFM to identify the MCIO e.g. when querying the Container Infrastructure Service Management (CISM). See note 7. + repeated McioIdentificationData mcioIdentificationData = 61394540; + + // Describes traffic rules the MEC application requires. + repeated TrafficRuleDescriptor appTrafficRule = 234628538; + + ChangeAppInstanceStateOpConfig changeAppInstanceStateOpConfig = 55744975; + + // Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation. + repeated string mecVersion = 109511822; + + // Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. See note 5. + repeated SwImageDescriptor swImageDescriptor = 44906537; + + TerminateAppInstanceOpConfig terminateAppInstanceOpConfig = 386907050; + + // Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2. + repeated TransportDependency transportDependencies = 237579534; + + // Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM used to realize this MEC application. See note 5. + repeated VirtualComputeDescriptor virtualComputeDescriptor = 284710718; + + // Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the same host and same network namespace. See note 5 and note 7. + repeated OsContainerDescriptor osContainerDescriptor = 528520781; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_external_cpd.proto b/AppPkgMgmtProto3/proto3/models/app_external_cpd.proto new file mode 100644 index 0000000000000000000000000000000000000000..28cd02b9f8872c9f4fe1dd169b6d0936fa101ccb --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_external_cpd.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/additional_service_data.proto"; +import public "models/virtual_network_interface_requirements.proto"; + +message AppExternalCpd { + + // All attributes inherited from Cpd. See note 2. + string inheritedAttributes = 295143377; + + // Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1. + repeated VirtualNetworkInterfaceRequirements virtualNetworkInterfaceRequirements = 388670342; + + // Additional service identification data of the external CP. For the definition of AdditionalServiceData, refer to clause 7.1.18.3 of ETSI GS NFV IFA 011 [1]. + repeated AdditionalServiceData additionalServiceData = 69883561; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_network_policy.proto b/AppPkgMgmtProto3/proto3/models/app_network_policy.proto new file mode 100644 index 0000000000000000000000000000000000000000..3f4bf25d78834e217e8f34adcb4c210e9aba210e --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_network_policy.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_network_policy_steered_network.proto"; + +message AppNetworkPolicy { + + AppNetworkPolicySteeredNetwork steeredNetwork = 32182818; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_network_policy_steered_network.proto b/AppPkgMgmtProto3/proto3/models/app_network_policy_steered_network.proto new file mode 100644 index 0000000000000000000000000000000000000000..2bd70accf80b7a48358c3dedafcbfb63dece8430 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_network_policy_steered_network.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message AppNetworkPolicySteeredNetwork { + + // If present and the application prefers to use a cellular network, set to true. Otherwise, set to false. + bool cellularNetwork = 392334692; + + // If present and the application prefers to use a Wi-Fi network, set to true. Otherwise, set to false. + bool wiMinusfiNetwork = 282209517; + + // If present and the application prefers to use a fixed access network, set to true. Otherwise, set to false. + bool fixedAccessNetwork = 113322265; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_filter.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_filter.proto new file mode 100644 index 0000000000000000000000000000000000000000..b3ea14c03847aff8ff70efb0cde4a06736914e89 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_filter.proto @@ -0,0 +1,49 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/operational_state.proto"; + +message AppPkgFilter { + + // Match the application package identifier which is allocated by the MEO. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter. see note. + string appPkgInfoId = 443648567; + + // Match the application descriptor identifier which is allocated by the application provider. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter. See note. + string appDId = 337359172; + + // Match the provider's name of the onboarded application. + string appProvider = 239586510; + + // Match the name of the onboarded application. + string appName = 257265589; + + // Match the software version of the application package. + string appSoftwareVersion = 202051794; + + // Match the version of the application descriptor. + string appDVersion = 414673174; + + OperationalState operationalState = 102480931; + + // Match particular usage state of the application package. IN_USE: application instances instantiated from this package exist. NOT_IN_USE: No application instance instantiated from this package exist. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise. + enum UsageStateEnum { + IN_USE = 0; + NOT_IN_USE = 1; + } + + UsageStateEnum usageState = 161238163; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_info.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..dc6eddf786298c196399e3d231ea616da8ec3502 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_info.proto @@ -0,0 +1,71 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_info_links.proto"; +import public "models/checksum.proto"; +import public "models/key_value_pairs.proto"; +import public "models/onboarding_state.proto"; +import public "models/operational_state.proto"; +import public "models/problem_details.proto"; +import public "models/usage_state.proto"; + +message AppPkgInfo { + + // Identifier of the onboarded application package. + string id = 3355; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + // Provider of the application and of the AppD. + string appProvider = 239586510; + + // Name to identify the MEC application. + string appName = 257265589; + + // Software version of the application. This is updated when there is any change to the software in the onboarded application package. + string appSoftwareVersion = 202051794; + + // Identifies the version of the application descriptor. + string appDVersion = 414673174; + + Checksum checksum = 463166533; + + // The singleton signing certificate if it is included as a file in the AppD archive. + string signingCertificate = 239894703; + + // Information of application software image in application package. Type is TBD. See note 1. + repeated string softwareImages = 372852994; + + // Additional information of application package artifacts that are not application software images. Type is TBD. See note 2. + repeated string additionalArtifacts = 455665542; + + OnboardingState onboardingState = 259377355; + + OperationalState operationalState = 102480931; + + UsageState usageState = 161238163; + + // The MEC version that compatible with this application. This information is copied from the AppD. + repeated string mecInfo = 402039066; + + ProblemDetails onBoardingFailureDetails = 439209075; + + KeyValuePairs userDefinedData = 402101384; + + AppPkgInfoLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_info_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_info_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..61d9b743df936ae9c2ffd333515ba3ce9f6a6ca7 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_info_links.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppPkgInfoLinks { + + LinkType self = 3526476; + + LinkType appD = 3000899; + + LinkType appPkgContent = 125657589; + + LinkType vnfPkgInfo = 145681396; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_info_modifications.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_info_modifications.proto new file mode 100644 index 0000000000000000000000000000000000000000..a0cfbce66e51af4f1beda0f150676e81360d68e9 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_info_modifications.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/operational_state.proto"; + +message AppPkgInfoModifications { + + OperationalState OperationalState = 408385540; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_notification.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_notification.proto new file mode 100644 index 0000000000000000000000000000000000000000..e27dcc0f60a7775eebc982563e338774e92f3bee --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_notification.proto @@ -0,0 +1,44 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_notification_links.proto"; +import public "models/app_pkg_notification_type.proto"; +import public "models/operational_state.proto"; +import public "models/time_stamp.proto"; + +message AppPkgNotification { + + // Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value. + string id = 3355; + + AppPkgNotificationType notificationType = 925384; + + // Identifier of the subscription related to this notification. + string subscriptionId = 405049114; + + TimeStamp timeStamp = 25573622; + + // Identifier of the onboarded application package. + string appPkgId = 79968872; + + // Identifier of this MEC application descriptor. This attribute shall be globally unique. + string appDId = 337359172; + + OperationalState operationalState = 102480931; + + AppPkgNotificationLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_notification_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..8e6afdec83f40b79aee78b7cfd7320a54843eabe --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppPkgNotificationLinks { + + LinkType subscription = 341203229; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_notification_type.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..8cdcb8789d8f37cb221f64eb3a4b69f68a890f7a --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_notification_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppPkgNotificationType { + APPPACKAGEONBOARDED = 0; + APPPACAKGEENABLED = 1; + APPPACAKGEDISABLED = 2; + APPPACKAGEDELETED = 3; +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription.proto new file mode 100644 index 0000000000000000000000000000000000000000..2879f9cb95a64ffd9d5f3a089054e96485ed9954 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_filter.proto"; +import public "models/app_pkg_subscription_type.proto"; + +message AppPkgSubscription { + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppPkgSubscriptionType subscriptionType = 515734025; + + // The attribute-based filter is to filter application packages on which the query applies + repeated AppPkgFilter appPkgFilter = 353327942; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..2c457a8f77b422eadcc5aaad78086a3e830c8b86 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_subscription_info_links.proto"; +import public "models/app_pkg_subscription_type.proto"; + +message AppPkgSubscriptionInfo { + + // Identifier of the subscription to application package notification. + string id = 3355; + + AppPkgSubscriptionType subscriptionType = 515734025; + + // The URI of the endpoint for the notification to be sent to. + string callbackUri = 259033834; + + AppPkgSubscriptionInfoLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..d74f318dad2971cd9e6e73163eb520210fbf9c57 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_info_links.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; + +message AppPkgSubscriptionInfoLinks { + + LinkType self = 3526476; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list.proto new file mode 100644 index 0000000000000000000000000000000000000000..f09a9977ece5a2239e088ac271cb3cd51e1dbc47 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_subscription_link_list_links.proto"; + +message AppPkgSubscriptionLinkList { + + AppPkgSubscriptionLinkListLinks links = 102977465; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list_links.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list_links.proto new file mode 100644 index 0000000000000000000000000000000000000000..85f8a034bddc7089d5ed9707a9b70915dd0557fc --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_link_list_links.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/link_type.proto"; +import public "models/subscriptions_app_pkg_subscription.proto"; + +message AppPkgSubscriptionLinkListLinks { + + LinkType self = 3526476; + + repeated SubscriptionsAppPkgSubscription subscriptions = 376752889; + +} diff --git a/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_type.proto b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..e660141afa18cd8f23000a34c5106c8e5ddda9e5 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/app_pkg_subscription_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum AppPkgSubscriptionType { + APPPACKAGEONBOARDINGSUBSCRIPTION = 0; + APPPACKAGECHANGESUBSCRIPTION = 1; + APPPACKAGEDELETIONSUBSCRIPTION = 2; +} diff --git a/AppPkgMgmtProto3/proto3/models/block_storage_data.proto b/AppPkgMgmtProto3/proto3/models/block_storage_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..f2537fdf82c8d23e9614759a253968449de17271 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/block_storage_data.proto @@ -0,0 +1,33 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/sw_image_desc.proto"; + +message BlockStorageData { + + // Size of virtualised storage resource in GB. + float sizeOfStorage = 93418079; + + // An array of key-value pairs that articulate the storage deployment requirements. + repeated KeyValuePairs vduStorageRequirements = 425848926; + + // Indicate if the storage support RDMA. + bool rdmaEnabled = 457519388; + + SwImageDesc swImageDesc = 202180474; + +} diff --git a/AppPkgMgmtProto3/proto3/models/category_ref.proto b/AppPkgMgmtProto3/proto3/models/category_ref.proto new file mode 100644 index 0000000000000000000000000000000000000000..398f56cabe69b6793bc6acf8716043350f031a82 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/category_ref.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message CategoryRef { + + // Reference of the catalogue. + string href = 3211051; + + // Unique identifier of the category. + string id = 3355; + + // Name of the category. + string name = 3373707; + + // Category version. + string version = 351608024; + +} diff --git a/AppPkgMgmtProto3/proto3/models/change_app_instance_state_op_config.proto b/AppPkgMgmtProto3/proto3/models/change_app_instance_state_op_config.proto new file mode 100644 index 0000000000000000000000000000000000000000..8fe6140523dbb2ca2da9b0ff036dedbeb3ece64b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/change_app_instance_state_op_config.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ChangeAppInstanceStateOpConfig { + + // Minimum timeout value for graceful stop of a VNF instance. + float minGracefulStopTimeout = 209921209; + + // Maximum recommended timeout value that can be needed to gracefully stop a VNF instance of a particular type under certain conditions, such as maximum load condition. This is provided by VNF provider as information for the operator facilitating the selection of optimal timeout value. This value is not used as constraint. + float maxRecommendedGracefulStopTimeout = 181741791; + + // Array of KVP requirements for VNF-specific parameters to be passed when invoking the OperateVnf operation. See note. + repeated string parameter = 343847852; + +} diff --git a/AppPkgMgmtProto3/proto3/models/checksum.proto b/AppPkgMgmtProto3/proto3/models/checksum.proto new file mode 100644 index 0000000000000000000000000000000000000000..12b677168cd28f4641227a19b1b778a1f9e22321 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/checksum.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message Checksum { + + // Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512. + string algorithm = 225490031; + + // 'String 1 The hexadecimal value of the checksum' + string hash = 3195150; + +} diff --git a/AppPkgMgmtProto3/proto3/models/checksum_data.proto b/AppPkgMgmtProto3/proto3/models/checksum_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..061ac7983ed075d5d03e4091d8bc7f4d4ae08d9a --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/checksum_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ChecksumData { + + // Specifies the algorithm used to obtain the checksum value see note. + string algorithm = 225490031; + + // Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + string hash = 3195150; + +} diff --git a/AppPkgMgmtProto3/proto3/models/connectivity_type.proto b/AppPkgMgmtProto3/proto3/models/connectivity_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..1568e9bd69bdeee35e13ac076b5838f7bbd6758b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/connectivity_type.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ConnectivityType { + + // Specifies the protocols that the VL uses. + enum LayerProtocolEnum { + ETHERNET = 0; + MPLS = 1; + ODU2 = 2; + IPV4 = 3; + IPV6 = 4; + PSEUDO_WIRE = 5; + ETC = 6; + } + + LayerProtocolEnum layerProtocol = 436659977; + + // Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). + string flowPattern = 159675011; + +} diff --git a/AppPkgMgmtProto3/proto3/models/create_app_pkg.proto b/AppPkgMgmtProto3/proto3/models/create_app_pkg.proto new file mode 100644 index 0000000000000000000000000000000000000000..7169e3380573031cb5cd9b863365633cbcf00c81 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/create_app_pkg.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum.proto"; +import public "models/key_value_pairs.proto"; + +message CreateAppPkg { + + // Name of the application package to be onboarded. + string appPkgName = 77693207; + + // Address information of the application package. See note. + string appPkgPath = 77753009; + + // Version of the application package to be onboarded.The appPkgName with appPkgVersion can be used to uniquely identify the application package. + string appPkgVersion = 348161648; + + // The provider's name of the application package to be onboarded. + string appProvider = 239586510; + + Checksum checksum = 463166533; + + KeyValuePairs userDefinedData = 402101384; + +} diff --git a/AppPkgMgmtProto3/proto3/models/dns_rule_descriptor.proto b/AppPkgMgmtProto3/proto3/models/dns_rule_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..800a5d80b0d99bb3db1fee11afeaf98fe8f68394 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/dns_rule_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/ip_address_type.proto"; + +message DNSRuleDescriptor { + + // Identifies the DNS Rule + string dnsRuleId = 478543936; + + // FQDN of the DNS rule + string domainName = 170344083; + + // IP address given by the DNS rule + string ipAddress = 23420112; + + IpAddressType ipAddressType = 46674345; + + // Time-to-live value + int32 ttl = 115180; + +} diff --git a/AppPkgMgmtProto3/proto3/models/feature_dependency.proto b/AppPkgMgmtProto3/proto3/models/feature_dependency.proto new file mode 100644 index 0000000000000000000000000000000000000000..f9d89bfd98fd6c8ae2d903a5b2fd7a667a5c9da9 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/feature_dependency.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message FeatureDependency { + + // The name of the feature, for example, UserApps, UEIdentity, etc. + string featureName = 377160031; + + // The version of the feature. + string version = 351608024; + +} diff --git a/AppPkgMgmtProto3/proto3/models/file_storage_data.proto b/AppPkgMgmtProto3/proto3/models/file_storage_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..c8d2383b659726dd4a96b88851e3d005fa76ddb8 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/file_storage_data.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/vnf_virtual_link_desc.proto"; + +message FileStorageData { + + // Size of virtualized storage resource in GB. + float sizeOfStorage = 93418079; + + // The shared file system protocol (e.g. NFS, CIFS). + string fileSystemProtocol = 321732228; + + VnfVirtualLinkDesc intVirtualLinkDesc = 430588394; + +} diff --git a/AppPkgMgmtProto3/proto3/models/filter_type.proto b/AppPkgMgmtProto3/proto3/models/filter_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..e598a15813d9794f8f122295b7a1d998418b3f9d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/filter_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum FilterType { + FLOW = 0; + PACKET = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/interface_descriptor.proto b/AppPkgMgmtProto3/proto3/models/interface_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..66f307f5486c7092f82dd0fe80a9c69b187aa151 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/interface_descriptor.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/interface_type.proto"; +import public "models/tunnel_info.proto"; + +message InterfaceDescriptor { + + // If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. + string dstIPAddress = 303696043; + + // If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. + string dstMACAddress = 439157945; + + InterfaceType interfaceType = 516041747; + + // If the interface type is MAC, the source address identifies the MAC address of the interface. + string srcMACAddress = 190916442; + + TunnelInfo tunnelInfo = 458558157; + +} diff --git a/AppPkgMgmtProto3/proto3/models/interface_type.proto b/AppPkgMgmtProto3/proto3/models/interface_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..d5ed2b58747a0889a83ea8f4e048451f4b5eef11 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/interface_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum InterfaceType { + TUNNEL = 0; + MAC = 1; + IP = 2; +} diff --git a/AppPkgMgmtProto3/proto3/models/ip_address_type.proto b/AppPkgMgmtProto3/proto3/models/ip_address_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..a4d29a97a4559e238d8ec84ac257afdeebcfab86 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/ip_address_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum IpAddressType { + V6 = 0; + V4 = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/key_value_pairs.proto b/AppPkgMgmtProto3/proto3/models/key_value_pairs.proto new file mode 100644 index 0000000000000000000000000000000000000000..f4a65651097f919833ade3a943509be40ab9fec7 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/key_value_pairs.proto @@ -0,0 +1,24 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message KeyValuePairs { + + string key = 106079; + + string value = 111972721; + +} diff --git a/AppPkgMgmtProto3/proto3/models/latency_descriptor.proto b/AppPkgMgmtProto3/proto3/models/latency_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..d2aa4cdabb6e2cc70039c73d8278f342145f4153 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/latency_descriptor.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LatencyDescriptor { + + // The value of the maximum latency in nano seconds tolerated by the MEC application. See note. + int32 maxLatency = 53618428; + +} diff --git a/AppPkgMgmtProto3/proto3/models/link_type.proto b/AppPkgMgmtProto3/proto3/models/link_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..9f828ad6b98f4801121d460a803cdb6d23d01fd3 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/link_type.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LinkType { + + // URI referring to a resource + string href = 3211051; + +} diff --git a/AppPkgMgmtProto3/proto3/models/logical_node_requirements.proto b/AppPkgMgmtProto3/proto3/models/logical_node_requirements.proto new file mode 100644 index 0000000000000000000000000000000000000000..9673ae9fba3d7c912eb9d036d7d2e056eef9a257 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/logical_node_requirements.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message LogicalNodeRequirements { + + // Identifies this set of logical node requirements + string id = 3355; + + // The logical node-level compute, memory and I/O requirements. An array of key-value pairs that articulate the deployment requirements. This could include the number of CPU cores on this logical node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel via the libnuma library) or a requirement related to the association of an I/O device with the logical node. + repeated string logicalNodeRequirementDetail = 330382346; + +} diff --git a/AppPkgMgmtProto3/proto3/models/max_number_of_impacted_instances.proto b/AppPkgMgmtProto3/proto3/models/max_number_of_impacted_instances.proto new file mode 100644 index 0000000000000000000000000000000000000000..b1f24cffdc4ce06468d0a0a16d8eb2cc3e41d44d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/max_number_of_impacted_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MaxNumberOfImpactedInstances { + + // Determines the size of the group for which the maxNumberOfImpactedInstances is specified. + int32 groupSize = 409275618; + + // The maximum number of instances that can be impacted simultaneously within the group of the specified size. + int32 maxNumberOfImpactedInstances = 28742796; + +} diff --git a/AppPkgMgmtProto3/proto3/models/mcio_constraint_params.proto b/AppPkgMgmtProto3/proto3/models/mcio_constraint_params.proto new file mode 100644 index 0000000000000000000000000000000000000000..2754979958e60eaf6613c80dd55dc1c430c40a98 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/mcio_constraint_params.proto @@ -0,0 +1,28 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum McioConstraintParams { + LOCALAFFINITYCISNODE = 0; + NODEADDITIONALCAPABILITYSSD = 1; + NODEADDITIONALCAPABILITYDPDK = 2; + NODEADDITIONALCAPABILITYSRIOV = 3; + NODEADDITIONALCAPABILITYGPU = 4; + NODEADDITIONALCAPABILITYFPGA = 5; + NODEADDITIONALCAPABILITYCPUPIN = 6; + NODECAPABILITYLOGICALNUMA = 7; + NODEPOOL = 8; +} diff --git a/AppPkgMgmtProto3/proto3/models/mcio_identification_data.proto b/AppPkgMgmtProto3/proto3/models/mcio_identification_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..a748d13d6155cf1248f1ed7d07a533df45ca679e --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/mcio_identification_data.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message McioIdentificationData { + + // The name of the mcio. See note 1. + string name = 3373707; + + // The type of the mcio. See note 2. + string type = 3575610; + +} diff --git a/AppPkgMgmtProto3/proto3/models/min_number_of_preserved_instances.proto b/AppPkgMgmtProto3/proto3/models/min_number_of_preserved_instances.proto new file mode 100644 index 0000000000000000000000000000000000000000..4ae599a5240c600509148b582fc3d66165c4ad3d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/min_number_of_preserved_instances.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MinNumberOfPreservedInstances { + + // Determines the size of the group for which the minNumberOfPreservedInstances is specified. + int32 groupSize = 409275618; + + // The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + int32 minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppPkgMgmtProto3/proto3/models/monitoring_parameter.proto b/AppPkgMgmtProto3/proto3/models/monitoring_parameter.proto new file mode 100644 index 0000000000000000000000000000000000000000..92a24da3a0034ea31d8abfe4b920f90c7a215a89 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/monitoring_parameter.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message MonitoringParameter { + + // Unique identifier of the monitoring parameter. + string monitoringParameterId = 369982780; + + // Human readable name of the monitoring parameter. + string name = 3373707; + + // Specifies the virtualised resource performance metric. + string performanceMetric = 26021379; + + // An attribute that describes the periodicity at which to collect the performance information. + string collectionPeriod = 316923396; + +} diff --git a/AppPkgMgmtProto3/proto3/models/nfvi_maintenance_info.proto b/AppPkgMgmtProto3/proto3/models/nfvi_maintenance_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..74936f629e94890dd62ea9e29d547c4a27b328a0 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/nfvi_maintenance_info.proto @@ -0,0 +1,49 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/max_number_of_impacted_instances.proto"; +import public "models/min_number_of_preserved_instances.proto"; + +message NfviMaintenanceInfo { + + // The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + float impactNotificationLeadTime = 253443258; + + // Indicates if it is requested to provide virtualised resource(s) of the same characteristics as the impacted ones to compensate for the impact. + bool isImpactMitigationRequested = 86005185; + + // Specifies the allowed migration types in order of preference in case of an impact. + enum SupportedMigrationTypeEnum { + NO_MIGRATION = 0; + OFFLINE_MIGRATION = 1; + LIVE_MIGRATION = 2; + } + + SupportedMigrationTypeEnum supportedMigrationType = 125270503; + + // Specifies the maximum interruption time that can go undetected at the VNF level during live migration. + float maxUndetectableInterruptionTime = 181342039; + + // Specifies the time required by the group to recover from an impact, indicating the minimum time between consecutive impacts of the group. + float minRecoveryTimeBetweenImpacts = 110146394; + + // Specifies the maximum number of instances that can be impacted simultaneously within the group of virtualised resources for different group sizes. + repeated MaxNumberOfImpactedInstances maxNumberOfImpactedInstances = 28742796; + + // Specifies the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources for different group sizes. + repeated MinNumberOfPreservedInstances minNumberOfPreservedInstances = 9969448; + +} diff --git a/AppPkgMgmtProto3/proto3/models/o_auth2_info.proto b/AppPkgMgmtProto3/proto3/models/o_auth2_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..265860fe702f745d84c2685adfc80f2733e128d7 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/o_auth2_info.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message OAuth2Info { + + // \"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \" + enum GrantTypesEnum { + SEE_DESCRIPTION = 0; + } + + GrantTypesEnum grantTypes = 303036606; + + // The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. + string tokenEndpoint = 117387951; + +} diff --git a/AppPkgMgmtProto3/proto3/models/object_storage_data.proto b/AppPkgMgmtProto3/proto3/models/object_storage_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..957de1f3c7da1b66f25e978f9c1363028385722d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/object_storage_data.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ObjectStorageData { + + // Maximum size of virtualized storage resource in GB. + float maxSizeOfStorage = 515704161; + +} diff --git a/AppPkgMgmtProto3/proto3/models/onboarding_state.proto b/AppPkgMgmtProto3/proto3/models/onboarding_state.proto new file mode 100644 index 0000000000000000000000000000000000000000..e2b508580c998ac9e278b233a6b99d1ef693bf7f --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/onboarding_state.proto @@ -0,0 +1,23 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OnboardingState { + CREATED = 0; + UPLOADING = 1; + PROCESSING = 2; + ONBOARDED = 3; +} diff --git a/AppPkgMgmtProto3/proto3/models/operational_state.proto b/AppPkgMgmtProto3/proto3/models/operational_state.proto new file mode 100644 index 0000000000000000000000000000000000000000..069ee4b20ca3853de188cf06d7be33357a57c2aa --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/operational_state.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum OperationalState { + DISABLED = 0; + ENABLED = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/os_container_descriptor.proto b/AppPkgMgmtProto3/proto3/models/os_container_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..8a62d7e76d5adfc69b3dfd1e4630dbb3d415b86c --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/os_container_descriptor.proto @@ -0,0 +1,70 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/sw_image_desc.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message OsContainerDescriptor { + + // Unique identifier of this OsContainerDesc in the VNFD. + string osContainerDescId = 283861225; + + // Human readable name of this OS container. + string name = 3373707; + + // Human readable description of this OS container. + string description = 113933319; + + // Number of CPU resources requested for the container (e.g. in milli-CPU-s). + int32 requestedCpuResources = 220532760; + + // Amount of memory resources requested for the container (e.g. in MB). + float requestedMemoryResources = 382519511; + + // Size of ephemeral storage resources requested for the container (e.g. in GB). + float requestedEphemeralStorageResources = 155608615; + + // An array of key-value pairs of extended resources required by the container see note. + repeated KeyValuePairs extendedResourceRequests = 442743117; + + // See note. + string additionalProperties = 276929725; + + // Number of CPU resources the container can maximally use (e.g. in milli-CPU). + int32 cpuResourceLimit = 246845318; + + // Amount of memory resources the container can maximally use (e.g. in MB). + float memoryResourceLimit = 338185423; + + // Size of ephemeral storage resources the container can maximally use (e.g. in GB). + float ephemeralStorageResourceLimit = 179231441; + + // Specifies HugePages resources requested for the container, which the container can maximally use. + map hugePageResources = 34406550; + + VirtualCpuPinningData cpuPinningRequirements = 144271412; + + SwImageDesc swImageDesc = 202180474; + + // Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. + string bootData = 401855935; + + // Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameters = 161249200; + +} diff --git a/AppPkgMgmtProto3/proto3/models/problem_details.proto b/AppPkgMgmtProto3/proto3/models/problem_details.proto new file mode 100644 index 0000000000000000000000000000000000000000..1f11e75cdd2cfcf76ef9f91b5bc1a8c29666154c --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/problem_details.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ProblemDetails { + + // A human-readable explanation specific to this occurrence of the problem + string detail = 261482417; + + // A URI reference that identifies the specific occurrence of the problem + string instance = 18257046; + + // The HTTP status code for this occurrence of the problem + int32 status = 355610639; + + // A short, human-readable summary of the problem type + string title = 110371416; + + // A URI reference according to IETF RFC 3986 that identifies the problem type + string type = 3575610; + +} diff --git a/AppPkgMgmtProto3/proto3/models/qo_s.proto b/AppPkgMgmtProto3/proto3/models/qo_s.proto new file mode 100644 index 0000000000000000000000000000000000000000..718432cb70cbd924da1859a7fe270b9a2b48fd9d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/qo_s.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message QoS { + + // Specifies the maximum latency in ms. + float latency = 46576386; + + // Specifies the maximum jitter in ms. + float packetDelayVariation = 20616827; + + // Specifies the maximum packet loss ratio. + float packetLossRatio = 63177475; + +} diff --git a/AppPkgMgmtProto3/proto3/models/requested_additional_capability_data.proto b/AppPkgMgmtProto3/proto3/models/requested_additional_capability_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..e4466a5c30024ae2d7ca4d2214e9d361ea21ebd3 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/requested_additional_capability_data.proto @@ -0,0 +1,35 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message RequestedAdditionalCapabilityData { + + // Specifies a requested additional capability for the VDU + string requestedAdditionalCapabilityName = 251694426; + + // Indicates whether the requested additional capability is mandatory for successful operation + bool supportMandatory = 89498316; + + // Specifies the minimum version of the requested additional capability + string minRequestedAdditionalCapabilityVersion = 367700901; + + // Specifies the preferred version of the requested additional capability + string preferredRequestedAdditionalCapabilityVersion = 210210575; + + repeated KeyValuePairs targetPerformanceParameters = 226256172; + +} diff --git a/AppPkgMgmtProto3/proto3/models/security_info.proto b/AppPkgMgmtProto3/proto3/models/security_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..8d8714dbbb69869d734cd4ddb5df2efba8a8ba04 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/security_info.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/o_auth2_info.proto"; + +message SecurityInfo { + + OAuth2Info oAuth2Info = 137361497; + + // 'Extensions for alternative transport mechanisms. These extensions depend on the actual transport, and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).' + repeated string Left_ParenthesisextensionsRight_Parenthesis = 403455488; + +} diff --git a/AppPkgMgmtProto3/proto3/models/serializer_type.proto b/AppPkgMgmtProto3/proto3/models/serializer_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..7cbd2cdc35f5179ae2ebe9255dd1e757565117e6 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/serializer_type.proto @@ -0,0 +1,22 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum SerializerType { + JSON = 0; + XML = 1; + PROTOBUF3 = 2; +} diff --git a/AppPkgMgmtProto3/proto3/models/service_dependency.proto b/AppPkgMgmtProto3/proto3/models/service_dependency.proto new file mode 100644 index 0000000000000000000000000000000000000000..77abb53ba6d7d63c61ca3fab74a19b61a0396b1d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/service_dependency.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transport_dependency.proto"; + +message ServiceDependency { + + // Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage. + repeated string requestedPermissions = 50377785; + + CategoryRef serCategory = 286031232; + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + // Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + repeated TransportDependency serTransportDependencies = 527834511; + + // The version of the service. + string version = 351608024; + +} diff --git a/AppPkgMgmtProto3/proto3/models/service_descriptor.proto b/AppPkgMgmtProto3/proto3/models/service_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..8974844ba39d38a2fb8289a4823fb57e2be8aad6 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/service_descriptor.proto @@ -0,0 +1,32 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/category_ref.proto"; +import public "models/transports_supported.proto"; + +message ServiceDescriptor { + + // The name of the service, for example, RNIS, LocationService, etc. + string serName = 372341518; + + CategoryRef serCategory = 286031232; + + // The version of the service. + string version = 351608024; + + repeated TransportsSupported transportsSupported = 392389276; + +} diff --git a/AppPkgMgmtProto3/proto3/models/service_port_data.proto b/AppPkgMgmtProto3/proto3/models/service_port_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..8e0f7cde11287d38b643c38e474a03e604d8a6d9 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/service_port_data.proto @@ -0,0 +1,38 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message ServicePortData { + + // The name of the port exposed by the VirtualCp. + string name = 3373707; + + // The L4 protocol for this port exposed by the VirtualCp. + enum ProtocolEnum { + TCP = 0; + UDP = 1; + SCTP = 2; + } + + ProtocolEnum protocol = 452292969; + + // The L4 port number exposed by the VirtualCp. + int32 port = 3446913; + + // Specifies whether the port attribute value is allowed to be configurable. + bool portConfigurable = 39204265; + +} diff --git a/AppPkgMgmtProto3/proto3/models/subscriptions_app_pkg_subscription.proto b/AppPkgMgmtProto3/proto3/models/subscriptions_app_pkg_subscription.proto new file mode 100644 index 0000000000000000000000000000000000000000..a1fa43ee2161264efa59d498cfe52a7a03ff2fac --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/subscriptions_app_pkg_subscription.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/app_pkg_subscription_type.proto"; + +message SubscriptionsAppPkgSubscription { + + // The URI referring to the subscription. + string href = 3211051; + + AppPkgSubscriptionType subscriptionType = 515734025; + +} diff --git a/AppPkgMgmtProto3/proto3/models/sw_image_desc.proto b/AppPkgMgmtProto3/proto3/models/sw_image_desc.proto new file mode 100644 index 0000000000000000000000000000000000000000..9e4f568f0fdd63a2862088422136d5a552979240 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/sw_image_desc.proto @@ -0,0 +1,55 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum_data.proto"; + +message SwImageDesc { + + // The identifier of this software image. + string id = 3355; + + // The name of this software image. + string name = 3373707; + + // The version of this software image. + string version = 351608024; + + ChecksumData checksum = 463166533; + + // The container format describes the container file format in which software image is provided. + string containerFormat = 35720152; + + // The disk format of a software image is the format of the underlying disk image. See note 1 + string diskFormat = 521631759; + + // The minimal disk size requirement for this software image. The value of the \"size of storage\" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1 + float minDisk = 526561040; + + // The minimal RAM requirement for this software image. The value of the \"size\" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2 + float minRam = 319382; + + // The size of this software image file. See note 3 + float size = 3530753; + + SwImageDesc swImage = 223016620; + + // Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used. + string operatingSystem = 102924594; + + // Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + repeated string supportedVirtualisationEnvironment = 306169277; + +} diff --git a/AppPkgMgmtProto3/proto3/models/sw_image_descriptor.proto b/AppPkgMgmtProto3/proto3/models/sw_image_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..314fe6be6bc03926fc287308016f67de09643ef6 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/sw_image_descriptor.proto @@ -0,0 +1,58 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/checksum_data.proto"; +import public "models/sw_image_desc.proto"; +import public "models/version.proto"; + +message SwImageDescriptor { + + // The identifier of this software image. + string id = 3355; + + // The name of this software image. + string name = 3373707; + + // The version of this software image. + repeated Version version = 351608024; + + ChecksumData checksum = 463166533; + + // The container format describes the container file format in which software image is provided. + string containerFormat = 35720152; + + // The disk format of a software image is the format of the underlying disk image. See note 1. + string diskFormat = 521631759; + + // The minimal disk size requirement for this software image. See note 1. + float minDisk = 526561040; + + // The minimal RAM requirement for this software image. See note 2. + float minRam = 319382; + + // The size of this software image file. See note 3. + float size = 3530753; + + // A reference to the actual software image. + repeated SwImageDesc swImage = 223016620; + + // Specifies the operating system used in the software image. + string operatingSystem = 102924594; + + // Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + repeated string supportedVirtualisationEnvironment = 306169277; + +} diff --git a/AppPkgMgmtProto3/proto3/models/terminate_app_instance_op_config.proto b/AppPkgMgmtProto3/proto3/models/terminate_app_instance_op_config.proto new file mode 100644 index 0000000000000000000000000000000000000000..11f2c00d8d86d6fb8b03ba46cb661263dce8a776 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/terminate_app_instance_op_config.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TerminateAppInstanceOpConfig { + + // Minimum timeout value for graceful stop of a VNF instance. + float minGracefulTerminationTimeout = 43882836; + + // Maximum recommended timeout value that can be needed to gracefully terminate a VNF instance of a particular type under certain conditions, such as maximum load condition. This is provided by VNF provider as information for the operator facilitating the selection of optimal timeout value. This value is not used as constraint. + float maxRecommendedGracefulTerminationTimeout = 118447847; + + // Array of KVP requirements for VNF-specific parameters to be passed when invoking the TerminateVnf operation. See note. + repeated string parameter = 343847852; + +} diff --git a/AppPkgMgmtProto3/proto3/models/time_stamp.proto b/AppPkgMgmtProto3/proto3/models/time_stamp.proto new file mode 100644 index 0000000000000000000000000000000000000000..5344955bbcbda8a44a18b5c642aad9c97804c2c2 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/time_stamp.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TimeStamp { + + // The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 nanoSeconds = 46708012; + + // The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. + int32 seconds = 359484034; + +} diff --git a/AppPkgMgmtProto3/proto3/models/traffic_filter.proto b/AppPkgMgmtProto3/proto3/models/traffic_filter.proto new file mode 100644 index 0000000000000000000000000000000000000000..a1493f2938e9e1a8fb6bad13d43bac016df69271 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/traffic_filter.proto @@ -0,0 +1,63 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message TrafficFilter { + + // Used to match all IPv4 packets that have the same DSCP. + int32 dSCP = 3061020; + + // A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. + repeated string dstAddress = 407279216; + + // A port or a range of ports. + repeated string dstPort = 347416553; + + // Used for GTP tunnel based traffic rule. + repeated string dstTunnelPort = 320657582; + + // Specify the protocol of the traffic filter. + repeated string protocol = 452292969; + + // Used to match all packets that have the same QCI. + int32 qCI = 110743; + + // An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. + repeated string srcAddress = 240897392; + + // A port or a range of ports. + repeated string srcPort = 343000958; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelAddress = 86899993; + + // Used for GTP tunnel based traffic rule. + repeated string srcTunnelPort = 32028174; + + // Used to match all IPv6 packets that have the same TC. + int32 tC = 3663; + + // Used for tag based traffic rule. + repeated string tag = 114586; + + // Used for GTP tunnel based traffic rule. + repeated string tgtTunnelAddress = 5196918; + + repeated string uri = 116076; + + repeated string packetLabel = 513464140; + +} diff --git a/AppPkgMgmtProto3/proto3/models/traffic_rule_descriptor.proto b/AppPkgMgmtProto3/proto3/models/traffic_rule_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..d9ea2719b69b5316450759ec6f04c9187cca703a --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/traffic_rule_descriptor.proto @@ -0,0 +1,40 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/action.proto"; +import public "models/filter_type.proto"; +import public "models/interface_descriptor.proto"; +import public "models/traffic_filter.proto"; + +message TrafficRuleDescriptor { + + Action action = 349209036; + + // Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. + repeated InterfaceDescriptor dstInterface = 181384437; + + FilterType filterType = 479309104; + + // Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note 1. + int32 priority = 91719262; + + // The filter used to identify specific flow/packets that need to be handled by the MEC host. + repeated TrafficFilter trafficFilter = 511989803; + + // Identifies the traffic rule. + string trafficRuleId = 157373036; + +} diff --git a/AppPkgMgmtProto3/proto3/models/transport_dependency.proto b/AppPkgMgmtProto3/proto3/models/transport_dependency.proto new file mode 100644 index 0000000000000000000000000000000000000000..0377ead13d709be2b0a8499cc6a59830e0970870 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transport_dependency.proto @@ -0,0 +1,30 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportDependency { + + // Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + repeated string labels = 36675587; + + // Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. + repeated SerializerType serializers = 283951841; + + TransportDescriptor transport = 516093738; + +} diff --git a/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto b/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..87b338e81fa7de8f7c21007e07c5cdca5d028237 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transport_descriptor.proto @@ -0,0 +1,41 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/security_info.proto"; +import public "models/transport_types.proto"; + +message TransportDescriptor { + + // The name of this transport. + string name = 3373707; + + // Human-readable description of this transport. + string description = 113933319; + + // The name of the protocol used. Shall be set to HTTP for a REST API. + string protocol = 452292969; + + SecurityInfo security = 412251969; + + TransportTypes type = 3575610; + + // The version of the protocol used. + string version = 351608024; + + // Additional implementation specific details of the transport. + string implSpecificInfo = 109027520; + +} diff --git a/AppPkgMgmtProto3/proto3/models/transport_types.proto b/AppPkgMgmtProto3/proto3/models/transport_types.proto new file mode 100644 index 0000000000000000000000000000000000000000..019b5a264d68a9cc11396aa06328c44ee3683e86 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transport_types.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum TransportTypes { + REST_HTTP = 0; + MB_TOPIC_BASED = 1; + MB_ROUTING = 2; + MB_PUBSUB = 3; + RPC = 4; + RPC_STREAMING = 5; + WEBSOCKET = 6; +} diff --git a/AppPkgMgmtProto3/proto3/models/transports_supported.proto b/AppPkgMgmtProto3/proto3/models/transports_supported.proto new file mode 100644 index 0000000000000000000000000000000000000000..6bba1509bca1133c5f55a83a4bf849a9636574ee --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/transports_supported.proto @@ -0,0 +1,27 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/serializer_type.proto"; +import public "models/transport_descriptor.proto"; + +message TransportsSupported { + + TransportDescriptor transport = 516093738; + + // Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011. + repeated SerializerType serializers = 283951841; + +} diff --git a/AppPkgMgmtProto3/proto3/models/tunnel_info.proto b/AppPkgMgmtProto3/proto3/models/tunnel_info.proto new file mode 100644 index 0000000000000000000000000000000000000000..79bbe4f5b214e41d8ef05a84eb9f77271eb14f30 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/tunnel_info.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/tunnel_type.proto"; + +message TunnelInfo { + + // Destination address of the tunnel. + string tunnelDstAddress = 430153977; + + string tunnelSpecificData = 160961404; + + // Source address of the tunnel. + string tunnelSrcAddress = 263772153; + + TunnelType tunnelType = 458219585; + +} diff --git a/AppPkgMgmtProto3/proto3/models/tunnel_type.proto b/AppPkgMgmtProto3/proto3/models/tunnel_type.proto new file mode 100644 index 0000000000000000000000000000000000000000..ee94e01dd9a0c6defaf3ef1befe83f6a623b763e --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/tunnel_type.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum TunnelType { + GTP_U = 0; + GRE = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/usage_state.proto b/AppPkgMgmtProto3/proto3/models/usage_state.proto new file mode 100644 index 0000000000000000000000000000000000000000..f7024eb2a17d613b8853fc9965e8d30463e390dd --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/usage_state.proto @@ -0,0 +1,21 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +enum UsageState { + IN_USE = 0; + NOT_IN_USE = 1; +} diff --git a/AppPkgMgmtProto3/proto3/models/user_context_transfer_capability.proto b/AppPkgMgmtProto3/proto3/models/user_context_transfer_capability.proto new file mode 100644 index 0000000000000000000000000000000000000000..f406f51bf4a47258ee74437286325f58e77ecbc7 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/user_context_transfer_capability.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message UserContextTransferCapability { + + // If the application is stateful, this attribute shall be set to true. Otherwise, set to false. + bool statefulApplication = 286608798; + + // This attribute shall be present if the application is stateful and absent otherwise. If the application supports user context transfer, set to true. Otherwise, set to false. + bool userContextTransferSupport = 348003682; + +} diff --git a/AppPkgMgmtProto3/proto3/models/version.proto b/AppPkgMgmtProto3/proto3/models/version.proto new file mode 100644 index 0000000000000000000000000000000000000000..7cfda5d43343be52fdba9b97951ad0511737e8f3 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/version.proto @@ -0,0 +1,29 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message Version { + + // Identifier of the source VNFD and the source VNF package. See note 1. + string srcVnfdId = 351567819; + + // Identifier of the destination VNFD and the destination VNF package. See note 1. + string dstVnfdId = 104078167; + + // Identifier of the deployment flavour in the source VNF package for which this modification applies. See note 2. + string srcFlavourId = 330059115; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_compute_descriptor.proto b/AppPkgMgmtProto3/proto3/models/virtual_compute_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..6c202fb8ba3f1f401e8d67c2c38d83a50f1a9eab --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_compute_descriptor.proto @@ -0,0 +1,41 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/logical_node_requirements.proto"; +import public "models/requested_additional_capability_data.proto"; +import public "models/virtual_cpu_data.proto"; +import public "models/virtual_memory_data.proto"; + +message VirtualComputeDescriptor { + + // Unique identifier of this VirtualComputeDesc in the VNFD. + string virtualComputeDescId = 124849833; + + repeated LogicalNodeRequirements logicalNode = 534614443; + + repeated RequestedAdditionalCapabilityData requestAdditionalCapabilities = 387050772; + + // Specifies compute requirements. + repeated string computeRequirements = 117445017; + + VirtualMemoryData virtualMemory = 289543148; + + VirtualCpuData virtualCpu = 297044640; + + repeated BlockStorageData virtualDisk = 455269561; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_cpu_data.proto b/AppPkgMgmtProto3/proto3/models/virtual_cpu_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..7fe412602891bc4d9e143c7ae433b96a476ccd39 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_cpu_data.proto @@ -0,0 +1,39 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; +import public "models/virtual_cpu_pinning_data.proto"; + +message VirtualCpuData { + + // CPU architecture type. Examples are x86, ARM. + string cpuArchitecture = 291765478; + + // Number of virtual CPUs. + int32 numVirtualCpu = 241427141; + + // Minimum virtual CPU clock rate (e.g. in MHz). + float virtualCpuClock = 190675825; + + // The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + string virtualCpuOversubscriptionPolicy = 309214339; + + // Array of key-value pair requirements on the Compute (CPU) for the VDU. + repeated KeyValuePairs vduCpuRequirements = 366499794; + + VirtualCpuPinningData virtualCpuPinning = 343263854; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_cpu_pinning_data.proto b/AppPkgMgmtProto3/proto3/models/virtual_cpu_pinning_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..4eec3665d5157dd2d4751898b01c108e33fd2652 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_cpu_pinning_data.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + + +message VirtualCpuPinningData { + + // Indicates the policy for CPU pinning. + enum VirtualCpuPinningPolicyEnum { + STATIC = 0; + DYNAMIC = 1; + } + + VirtualCpuPinningPolicyEnum virtualCpuPinningPolicy = 211166530; + + // List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of \"STATIC\" virtualCpuPinningPolicy. + repeated string virtualCpuPinningRule = 379174793; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_link_desc_flavour.proto b/AppPkgMgmtProto3/proto3/models/virtual_link_desc_flavour.proto new file mode 100644 index 0000000000000000000000000000000000000000..929efc8ae20c80f964e502829d0cb07ba7146ed8 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_link_desc_flavour.proto @@ -0,0 +1,26 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/qo_s.proto"; + +message VirtualLinkDescFlavour { + + // Identifies a flavour within a VnfVirtualLinkDesc. + string flavourId = 517043477; + + QoS qos = 112149; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_memory_data.proto b/AppPkgMgmtProto3/proto3/models/virtual_memory_data.proto new file mode 100644 index 0000000000000000000000000000000000000000..3b0e775f8cfa0b4de84854026c637edc4a629dec --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_memory_data.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/key_value_pairs.proto"; + +message VirtualMemoryData { + + // Amount of virtual memory in MB. + float virtualMemSize = 385060331; + + // The memory core oversubscription policy in terms of virtual memory to physical memory on the platform. The cardinality can be 0 during the allocation request, if no particular value is requested. + string virtualMemOversubscriptionPolicy = 237578262; + + // Array of key-value pair requirements on the memory for the VDU. + repeated KeyValuePairs vduMemRequirements = 271933317; + + // Specifies the memory allocation to be cognisant of the relevant process/core allocation. + bool numaEnabled = 9627943; + + // Specifies requirements on the huge pages resources for the virtual memory. + string hugePagesRequirements = 124971785; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_network_interface_requirements.proto b/AppPkgMgmtProto3/proto3/models/virtual_network_interface_requirements.proto new file mode 100644 index 0000000000000000000000000000000000000000..e057794c9d7ad4ef86284c6533d49d91450401e0 --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_network_interface_requirements.proto @@ -0,0 +1,36 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/logical_node_requirements.proto"; + +message VirtualNetworkInterfaceRequirements { + + // Provides a human readable name for the requirement. + string name = 3373707; + + // Provides a human readable description of the requirement. + string description = 113933319; + + // The requirements on standardized network interface capabilities, e.g. SR-IOV or secondary container cluster network interface deployment requirements.See note + string standardizedNetworkInterfaceRequirements = 73447241; + + // The additional network interface requirements beyond those specified in the standardizedNetworkInterfaceRequirements attribute.An element from an array of key-value pairs that articulate the network interface deployment requirements.See note. + string networkInterfaceRequirements = 102228263; + + // This references (couples) the CPD with any logical node I/O requirements (for network devices) that may have been created. Linking these attributes is necessary so that I/O requirements that need to be articulated at the logical node level can be associated with the network interface requirements associated with the CPD.See note + repeated LogicalNodeRequirements nicIoRequirements = 167234817; + +} diff --git a/AppPkgMgmtProto3/proto3/models/virtual_storage_descriptor.proto b/AppPkgMgmtProto3/proto3/models/virtual_storage_descriptor.proto new file mode 100644 index 0000000000000000000000000000000000000000..26cf23a5e0c9e0d90e64ccdb727b5716d85a3a2d --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/virtual_storage_descriptor.proto @@ -0,0 +1,47 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/block_storage_data.proto"; +import public "models/file_storage_data.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/object_storage_data.proto"; + +message VirtualStorageDescriptor { + + // Unique identifier of this VirtualStorageDesc in the VNFD. + string id = 3355; + + // Type of virtualized storage resource. + enum TypeOfStorageEnum { + BLOCK = 0; + OBJECT = 1; + FILE = 2; + } + + TypeOfStorageEnum typeOfStorage = 320663180; + + BlockStorageData blockStorageData = 376673800; + + ObjectStorageData objectStorageData = 502151164; + + FileStorageData fileStorageData = 500145579; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Indicates whether the virtual storage resource should be instantiated per VNFC instance. + bool perVnfcInstance = 58016487; + +} diff --git a/AppPkgMgmtProto3/proto3/models/vnf_virtual_link_desc.proto b/AppPkgMgmtProto3/proto3/models/vnf_virtual_link_desc.proto new file mode 100644 index 0000000000000000000000000000000000000000..8abba0659539bfd0bdaed61129d6005c048c98dd --- /dev/null +++ b/AppPkgMgmtProto3/proto3/models/vnf_virtual_link_desc.proto @@ -0,0 +1,51 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102; + +import public "models/connectivity_type.proto"; +import public "models/monitoring_parameter.proto"; +import public "models/nfvi_maintenance_info.proto"; +import public "models/virtual_link_desc_flavour.proto"; + +message VnfVirtualLinkDesc { + + // Unique identifier of this internal VLD in VNFD. + string virtualLinkDescId = 447465875; + + // Describes a specific flavour of the VL with specific bitrate requirements. + repeated VirtualLinkDescFlavour virtualLinkDescFlavour = 37410619; + + ConnectivityType connectivityType = 453097874; + + // Specifies test access facilities expected on the VL. + repeated string testAccess = 122531992; + + // Provides human-readable information on the purpose of the VL. + string description = 113933319; + + // Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + repeated MonitoringParameter monitoringParameter = 254574658; + + NfviMaintenanceInfo nfviMaintenanceInfo = 376778873; + + // Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + enum ExternallyManagedEnum { + REQUIRED = 0; + ALLOWED = 1; + } + + ExternallyManagedEnum externallyManaged = 51289628; + +} diff --git a/AppPkgMgmtProto3/proto3/services/app_pkgm_notifications_service.proto b/AppPkgMgmtProto3/proto3/services/app_pkgm_notifications_service.proto new file mode 100644 index 0000000000000000000000000000000000000000..69d1be92736980ed3b5bc73934b3788db4e36b3b --- /dev/null +++ b/AppPkgMgmtProto3/proto3/services/app_pkgm_notifications_service.proto @@ -0,0 +1,31 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.apppkgmnotificationsservice; + +import "google/protobuf/empty.proto"; +import public "models/app_pkg_notification.proto"; +import public "models/problem_details.proto"; + +service AppPkgmNotificationsService { + rpc AppPkgNotificationPOST (AppPkgNotificationPOSTRequest) returns (google.protobuf.Empty); + +} + +message AppPkgNotificationPOSTRequest { + // Notification endpoint to be created + AppPkgNotification appPkgNotification = 1; + +} + diff --git a/AppPkgMgmtProto3/proto3/services/app_pkgm_service.proto b/AppPkgMgmtProto3/proto3/services/app_pkgm_service.proto new file mode 100644 index 0000000000000000000000000000000000000000..d2a4f252a89c73c24eacb160b78486d4c12c00cb --- /dev/null +++ b/AppPkgMgmtProto3/proto3/services/app_pkgm_service.proto @@ -0,0 +1,243 @@ +/* + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management + + ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI. + + The version of the OpenAPI document: 3.1.1 + + Contact: cti_support@etsi.org + + Generated by OpenAPI Generator: https://openapi-generator.tech +*/ + +syntax = "proto3"; + +package mec0102.services.apppkgmservice; + +import "google/protobuf/empty.proto"; +import public "models/app_d.proto"; +import public "models/app_pkg_info.proto"; +import public "models/app_pkg_info_modifications.proto"; +import public "models/app_pkg_subscription.proto"; +import public "models/app_pkg_subscription_info.proto"; +import public "models/app_pkg_subscription_link_list.proto"; +import public "models/create_app_pkg.proto"; +import public "models/problem_details.proto"; + +service AppPkgmService { + rpc AppDGET (AppDGETRequest) returns (AppD); + + rpc AppDIdGET (AppDIdGETRequest) returns (google.protobuf.Empty); + + rpc AppDIdPUT (AppDIdPUTRequest) returns (google.protobuf.Empty); + + rpc AppPackageDELETE (AppPackageDELETERequest) returns (google.protobuf.Empty); + + rpc AppPackageGET (AppPackageGETRequest) returns (AppPackageGETResponse); + + rpc AppPackagePATCH (AppPackagePATCHRequest) returns (AppPackagePATCHResponse); + + rpc AppPackagesGET (AppPackagesGETRequest) returns (AppPackagesGETResponse); + + rpc AppPackagesPOST (AppPackagesPOSTRequest) returns (AppPkgInfo); + + rpc AppPkgGET (AppPkgGETRequest) returns (google.protobuf.Empty); + + rpc AppPkgIdGET (AppPkgIdGETRequest) returns (AppD); + + rpc AppPkgPUT (AppPkgPUTRequest) returns (google.protobuf.Empty); + + rpc IndividualSubscriptionDELETE (IndividualSubscriptionDELETERequest) returns (google.protobuf.Empty); + + rpc IndividualSubscriptionGET (IndividualSubscriptionGETRequest) returns (AppPkgSubscriptionInfo); + + rpc OnboardedAppPackageDELETE (OnboardedAppPackageDELETERequest) returns (google.protobuf.Empty); + + rpc OnboardedAppPackageGET (OnboardedAppPackageGETRequest) returns (OnboardedAppPackageGETResponse); + + rpc OnboardedAppPackagePATCH (OnboardedAppPackagePATCHRequest) returns (AppPkgInfoModifications); + + rpc OnboardedAppPackagesGET (OnboardedAppPackagesGETRequest) returns (OnboardedAppPackagesGETResponse); + + rpc OnboardedAppPackagesPOST (OnboardedAppPackagesPOSTRequest) returns (AppPkgInfo); + + rpc SubscriptionsGET (google.protobuf.Empty) returns (AppPkgSubscriptionLinkList); + + rpc SubscriptionsPOST (SubscriptionsPOSTRequest) returns (AppPkgSubscriptionInfo); + +} + +message AppDGETRequest { + // Identifier of an application descriptor + string appDId = 1; + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 2; + // Include all complex attributes in the response. + string allFields = 3; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 4; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 5; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 6; + +} + +message AppDIdGETRequest { + // Identifier of an application descriptor + string appDId = 1; + +} + +message AppDIdPUTRequest { + // Identifier of an application descriptor + string appDId = 1; + +} + +message AppPackageDELETERequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message AppPackageGETRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message AppPackageGETResponse { + repeated AppPkgInfo data = 1; +} + +message AppPackagePATCHRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + // Parameters for application package information modification. + AppPkgInfoModifications appPkgInfoModifications = 2; + +} + +message AppPackagePATCHResponse { + repeated AppPkgInfoModifications data = 1; +} + +message AppPackagesGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 3; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 5; + +} + +message AppPackagesGETResponse { + repeated AppPkgInfo data = 1; +} + +message AppPackagesPOSTRequest { + // Resource to be created + CreateAppPkg createAppPkg = 1; + +} + +message AppPkgGETRequest { + // Identifier of an on-boarded individual application package + string appPkgId = 1; + +} + +message AppPkgIdGETRequest { + // Identifier of an on-boarded individual application package + string appPkgId = 1; + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 2; + // Include all complex attributes in the response. + string allFields = 3; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 4; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 5; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 6; + +} + +message AppPkgPUTRequest { + // Identifier of an on-boarded individual application package + string appPkgId = 1; + +} + +message IndividualSubscriptionDELETERequest { + // Identifier of an individual subscription to notifications about application package changes + string subscriptionId = 1; + +} + +message IndividualSubscriptionGETRequest { + // Identifier of an individual subscription to notifications about application package changes + string subscriptionId = 1; + +} + +message OnboardedAppPackageDELETERequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message OnboardedAppPackageGETRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + +} + +message OnboardedAppPackageGETResponse { + repeated AppPkgInfo data = 1; +} + +message OnboardedAppPackagePATCHRequest { + // Identifier of an individual application package resource + string appPkgId = 1; + // Parameters for application package information modification. + repeated AppPkgInfoModifications appPkgInfoModifications = 2; + +} + +message OnboardedAppPackagesGETRequest { + // Attribute-based filtering parameters according to ETSI GS MEC 009 + string filter = 1; + // Include all complex attributes in the response. + string allFields = 2; + // Complex attributes of AppPkgInfo to be included into the response + string fields = 3; + // Complex attributes of AppPkgInfo to be excluded from the response. + string excludeFields = 4; + // Indicates to exclude the following complex attributes of AppPkgInfo from the response. + string excludeDefault = 5; + +} + +message OnboardedAppPackagesGETResponse { + repeated AppPkgInfo data = 1; +} + +message OnboardedAppPackagesPOSTRequest { + // Resource to be created + CreateAppPkg createAppPkg = 1; + +} + +message SubscriptionsPOSTRequest { + // The input parameters of subscribe operation to notifications + AppPkgSubscription appPkgSubscription = 1; + +} + diff --git a/MEC010-2_AppGrant.json b/MEC010-2_AppGrant.json index ba6a8ccb9946c1a7ce695b6866849a8ed15cb725..aa6c14540cf7fd76f3602e3925d6127a4eeab77c 100644 --- a/MEC010-2_AppGrant.json +++ b/MEC010-2_AppGrant.json @@ -3,7 +3,7 @@ "info": { "title": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management", "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.", - "version": "2.2.1", + "version": "3.1.1", "license": { "name": "BSD-3-Clause", "url": "https://forge.etsi.org/legal-matters" @@ -15,8 +15,8 @@ } }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf" }, "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "servers": [ @@ -34,9 +34,7 @@ "paths": { "/grants": { "post": { - "tags": [ - "granting" - ], + "tags": ["granting"], "summary": "requests a grant for a particular application lifecycle operation", "description": "requests a grant for a particular application lifecycle operation", "operationId": "grantPOST", @@ -69,70 +67,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -141,9 +91,7 @@ }, "/grants/{grantId}": { "get": { - "tags": [ - "granting" - ], + "tags": ["granting"], "summary": "read the grant", "description": "read the grant", "operationId": "GrantGET", @@ -177,70 +125,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -269,14 +169,12 @@ "type": "string", "description": "Identifier of a pre-configured link port to which the external CP will be associated. See note." } - } + }, + "description": "NOTE: The following conditions apply to the attributes \"linkPortId\" and \" cpProtocolData\":\n 1) The \"linkPortId\" and \"cpProtocolData\" attributes shall both be absent for the deletion of an existing \n external CP instance addressed by cpInstanceId.\n 2) At least one of these attributes shall be present for a to-be-created external CP instance or an existing \n external CP instance.\n 3) If the \"linkPortId\" attribute is absent, the MEPM shall create a link port.\n 4) If the \"cpProtocolData\" attribute is absent, the \"linkPortId\" attribute shall be provided referencing a precreated link port, and the MEPM can use means outside the scope of the present document to obtain \n the pre-configured address information for the connection point from the resource representing the link port.\n 5) If both \"cpProtocolData\" and \"linkportId\" are provided, the API consumer shall ensure that the \n cpProtocolData can be used with the pre-created link port referenced by \"linkPortId\".\n" }, "AppExtCpData": { "title": "AppExtCpData", - "required": [ - "cpConfig", - "cpdId" - ], + "required": ["cpConfig", "cpdId"], "type": "object", "properties": { "cpConfig": { @@ -294,39 +192,36 @@ }, "ResourceDefinition.Type": { "title": "ResourceDefinition.Type", - "enum": [ - "COMPUTE", - "VL", - "STORAGE", - "LINKPORT" - ], + "enum": ["COMPUTE", "STORAGE", "LINKPORT", "OSCONTAINER, see note."], "type": "string", - "description": "Type of the resource definition referenced.", - "examples": [ - "COMPUTE" - ] + "description": "Type of the resource definition referenced.\n", + "examples": ["COMPUTE"] }, "CpProtocolData": { "title": "CpProtocolData", - "required": [ - "layerProtocol" - ], + "required": ["layerProtocol"], "type": "object", "properties": { "ipOverEthernet": { - "$ref": "#/components/schemas/IpOverEthernetAddressData" + "type": "string", + "items": { + "$ref": "#/components/schemas/IpOverEthernetAddressData" + }, + "description": "Network address data for IP over Ethernet to assign to the extCP instance. Shall be present\nif layerProtocol is equal to \"IP_OVER_ETHERNET\", and shall be absent otherwise.\n" }, "layerProtocol": { - "$ref": "#/components/schemas/IpOverEthernetAddressData" + "type": "string", + "items": { + "$ref": "#/components/schemas/IpOverEthernetAddressData" + }, + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note." } - } + }, + "description": "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note.\nNOTE: This attribute allows to signal the addition of further types of layer and protocol in future\nversions of the present document in a backwards-compatible way. In the current version of the present\ndocument, only IP over Ethernet is supported.\n" }, "ExtLinkPortData": { "title": "ExtLinkPortData", - "required": [ - "id", - "resourceHandle" - ], + "required": ["id", "resourceHandle"], "type": "object", "properties": { "id": { @@ -340,11 +235,7 @@ }, "ExtVirtualLinkData": { "title": "ExtVirtualLinkData", - "required": [ - "extCps", - "id", - "resourceId" - ], + "required": ["extCps", "id", "resourceId"], "type": "object", "properties": { "extCps": { @@ -359,7 +250,7 @@ "items": { "$ref": "#/components/schemas/ExtLinkPortData" }, - "description": "Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the MEPM shall create the link ports on the external VL." + "description": "Externally provided link ports to be used to connect external connection points to this external\nVL. If this attribute is not present, the MEPM shall create the link ports on the external VL.\n" }, "id": { "type": "string", @@ -377,12 +268,7 @@ }, "Grant": { "title": "Grant", - "required": [ - "id", - "appInstanceId", - "appLcmOpOccId", - "_links" - ], + "required": ["id", "appInstanceId", "appLcmOpOccId", "_links"], "type": "object", "properties": { "id": { @@ -399,7 +285,7 @@ }, "vimConnections": { "type": "array", - "description": "Provides information regarding VIM connections that are approved to be used by the MEPM to allocate resources, and provides parameters of these VIM connections.", + "description": "Provides information regarding VIM connections that are approved to be used by the MEPM to\nallocate resources, and provides parameters of these VIM connections.See note 1.\n", "items": { "$ref": "#/components/schemas/VimConnectionInfo" } @@ -409,62 +295,65 @@ "items": { "$ref": "#/components/schemas/ZoneInfo" }, - "description": "" + "description": "Identifies resource zones where the resources are approved to be allocated by the MEPM." }, "zoneGroups": { "type": "array", "items": { "$ref": "#/components/schemas/ZoneGroupInfo" }, - "description": "" + "description": "Information about groups of resource zones that are related and that the MEO has chosen to fulfil a zoneGroup constraint in the Grant request." }, "addResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be added, with one entry per resource." }, "tempResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with one entry per resource" }, "removeResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be removed, with one entry per resource." }, "updateResources": { "type": "array", "items": { "$ref": "#/components/schemas/GrantInfo" }, - "description": "" + "description": "List of resources that are approved to be modified, with one entry per resource" }, "vimAssets": { - "$ref": "#/components/schemas/VimAssets" + "type": "string", + "$ref": "#/components/schemas/VimAssets", + "description": "Information about assets for the application that are managed by the MEO in the VIM, such as software images.See note 2." }, "extVirtualLinks": { "type": "array", "items": { "$ref": "#/components/schemas/ExtVirtualLinkData" }, - "description": "" + "description": "Information about external VLs to connect the application instance to. See note 3." }, "additionalParams": { - "type": "object", - "description": "'This data 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 8259'" + "$ref": "#/components/schemas/KeyValuePair", + "description": "MEPM, specific to the application and the LCM operation." }, "_links": { + "description": "Links to resources related to this request.", "$ref": "#/components/schemas/Grant.links" } }, - "description": "'This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 '" + "description": "This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 \nNOTE 1: This interface allows to signal the use of multiple VIMs per application. However, due to the partial support of \n this feature in the present release, it is recommended in the present document that the number of entries in \n the \"vims\" attribute in the Grant is not greater than 1.\nNOTE 2: The further condition will be defined by ETSI GS NFV-SOL 003 [7].\nNOTE 3: External VLs can be passed in the application lifecycle management operation requests such as Instantiate, \n and/or in the grant response. The MEO may choose to override in the grant response external VL instances \n that have been passed previously in the associated application lifecycle management request, if the lifecycle \n management request has originated from the MEO itself\n" }, "VimAssets": { "title": "VimAssets", @@ -482,10 +371,7 @@ }, "Grant.links": { "title": "Grant.links", - "required": [ - "appLcmOpOcc", - "appInstance" - ], + "required": ["appLcmOpOcc", "appInstance"], "type": "object", "properties": { "appLcmOpOcc": { @@ -499,9 +385,7 @@ }, "GrantInfo": { "title": "GrantInfo", - "required": [ - "resourceDefinitionId" - ], + "required": ["resourceDefinitionId"], "type": "object", "properties": { "resourceDefinitionId": { @@ -510,17 +394,29 @@ }, "resourceGroupId": { "type": "string", - "description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated." + "description": "Identifier of the \"infrastructure resource group\", logical grouping of virtual resources assigned\nto a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the\nVIM connection referenced by \"vimConnectionId\" applies to multiple infrastructure resource groups,\nthis attribute shall be present for new resources.If the VIM connection referenced by \"vimConnectionId\"\napplies to a single infrastructure resource group, this attribute may be present for new resources.\nThis attribute shall be absent for resources that have already been allocated.\n" }, "vimConnectionId": { "type": "string", - "description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated." + "description": "Identifier of the VIM connection to be used to manage this resource. Shall be present for new\nresources, and shall be absent for resources that have already been allocated.\n" }, "zoneId": { "type": "string", - "description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated." + "description": "Reference to the identifier of the \"ZoneInfo\" structure in the \"Grant\" structure defining\nthe resource zone into which this resource is to be placed. Shall be present for new resources\nif the zones concept is applicable to them (typically, Compute resources), and shall be absent\nfor resources that have already been allocated.\n" + }, + "containerNamespace": { + "type": "string", + "description": "The value of the namespace in which the MCIOs of an application with containerized components shall be deployed. This attribute shall be present if the granted resources are managed by a CISM. The attribute shall be absent if the granted resources are not managed by a CISM. See note.\n" + }, + "mcioConstraints": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, + "description": "\"'This data 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 8259'\"\n" } - } + }, + "description": "NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "GrantRequest": { "title": "GrantRequest", @@ -546,65 +442,57 @@ "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique." }, "operation": { - "$ref": "#/components/schemas/GrantRequest.Operation" + "$ref": "#/components/schemas/GrantRequest.Operation", + "description": "The lifecycle management operation for which granting is requested See notes 1 and 2." }, "addResources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourceDefinition" }, - "description": "" + "description": "List of resource definitions in the AppD for resources to be added by the LCM operation which is related to this grant request, with one entry per resource." }, "tempResources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourceDefinition" }, - "description": "" + "description": "List of resource definitions in the AppD for resources to be temporarily instantiated during the runtime of the LCM operation which is related to this grant request. See note 3." }, "removeResources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourceDefinition" }, - "description": "" + "description": "Removed by the LCM operation which is related to this grant request, with one entry per resource." }, "updateResources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourceDefinition" }, - "description": "" + "description": "Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource." }, "additionalParams": { - "type": "object", - "description": "'This data 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 8259'" + "$ref": "#/components/schemas/KeyValuePair", + "description": "MEPM, specific to the application and the LCM operation." }, "_links": { "$ref": "#/components/schemas/GrantRequest.links" } }, - "description": "'This type represents a grant request. Refer to clause 9.5.2.2 of ETSI GS NFV-SOL 003'" + "description": "This type represents a grant request. Refer to clause 9.5.2.2 of ETSI GS NFV-SOL 003\nNOTE 1: Other application LCM operations can be executed by the MEPM without requesting granting.\nNOTE 2: If the granting request is for Instantiate, addResources shall be present.\nNOTE 3: The MEO will assume that the MEPM will be responsible to both allocate and release the temporary \n resource during the runtime of the LCM operation. This means, the resource can be allocated and \n consumed after the \"start\" notification for the LCM operation is sent by the MEPM, and the resource will be\n released before the \"result\" notification of the application LCM operation is sent by the MEPM.\n" }, "GrantRequest.Operation": { "title": "GrantRequest.Operation", - "enum": [ - "INSTANTIATE", - "OPERATE", - "TERMINATE" - ], + "enum": ["INSTANTIATE", "OPERATE", "TERMINATE"], "type": "string", "description": "'The lifecycle management operation for which granting is requested'", - "examples": [ - "INSTANTIATE" - ] + "examples": ["INSTANTIATE"] }, "GrantRequest.links": { "title": "GrantRequest.links", - "required": [ - "appLcmOpOcc", - "appInstance" - ], + "required": ["appLcmOpOcc", "appInstance"], "type": "object", "properties": { "appLcmOpOcc": { @@ -622,23 +510,33 @@ "properties": { "macAddress": { "type": "string", - "description": "'MAC address. If this attribute is not present, it shall be chosen by the VIM'" + "description": "\"'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'\"\n" }, "ipAddresses": { "type": "array", "items": { "$ref": "#/components/schemas/IpAddress" }, - "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." + "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. See note 1.\n" } }, - "description": "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'" + "description": "NOTE 1: At least one of \"macAddress\" or \"ipAddresses\" shall be present.\nNOTE 2: Exactly one of \"fixedAddresses\", \"numDynamicAddresses\" or \"ipAddressRange\" shall be present.\n" + }, + "KeyValuePair": { + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } }, "IpAddress": { "title": "IpAddress", - "required": [ - "type" - ], + "required": ["type"], "type": "object", "properties": { "type": { @@ -654,7 +552,7 @@ "numDynamicAddresses": { "type": "integer", "description": "Number of dynamic addresses to assign (from the subnet defined by subnetId if provided)", - "contentEncoding": "int32" + "format": "int32" }, "addressRange": { "$ref": "#/components/schemas/AddressRange" @@ -668,22 +566,14 @@ }, "IpAddress.Type": { "title": "IpAddress.Type", - "enum": [ - "IPV4", - "IPV6" - ], + "enum": ["IPV4", "IPV6"], "type": "string", "description": "The type of the IP addresses.", - "examples": [ - "IPV4" - ] + "examples": ["IPV4"] }, "AddressRange": { "title": "AddressRange", - "required": [ - "minAddress", - "maxAddress" - ], + "required": ["minAddress", "maxAddress"], "type": "object", "properties": { "minAddress": { @@ -699,9 +589,7 @@ }, "LinkType": { "title": "LinkType", - "required": [ - "href" - ], + "required": ["href"], "type": "object", "properties": { "href": { @@ -725,7 +613,7 @@ "status": { "type": "integer", "description": "The HTTP status code for this occurrence of the problem", - "contentEncoding": "int32" + "format": "int32" }, "title": { "type": "string", @@ -739,12 +627,7 @@ }, "ResourceDefinition": { "title": "ResourceDefinition", - "required": [ - "id", - "type", - "resourceTemplateId", - "resource" - ], + "required": ["id", "type", "resourceTemplateId", "resource"], "type": "object", "properties": { "id": { @@ -752,28 +635,29 @@ "description": "Identifier of the related ResourceDefinition structure from the related GrantRequest structure." }, "type": { - "$ref": "#/components/schemas/ResourceDefinition.Type" + "$ref": "#/components/schemas/ResourceDefinition.Type", + "description": "Type of the resource definition referenced.See note" }, "vduId": { "type": "string", "description": "Reference to the related VDU in the AppD applicable to this resource." }, "resourceTemplateId": { - "type": "string", - "description": "Reference to a resource template, i.e. VirtualComputeDescriptor, AppExtCpd, VirtualStorageDescriptor in the AppD." + "description": "Reference to a resource template, in the AppD as follows: - If type=\"COMPUTE\": VirtualComputeDescriptor, - If type=\"LINKPORT\": AppExtCpd, - If type=\"STORAGE\": VirtualStorageDescriptor - If type=\"OSCONTAINER\": osContainerDescriptor Cardinality may be greater than \"1\" when Type =\"OSCONTAINER\" and multiple references to OsContainerDescriptor are present in the AppD. Cardinality shall be \"1\" otherwise.\n", + "type": "array", + "items": { + "type": "string" + } }, "resource": { "$ref": "#/components/schemas/Resource" } }, - "description": "'This type provides information of an existing or proposed resource used by the application. Refer to clause 9.5.3.2 of ETSI GS NFV-SOL 003 '" + "description": "This type provides information of an existing or proposed resource used by the application. Refer to clause 9.5.3.2 of ETSI GS NFV-SOL 003\nNOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "Resource": { "title": "Resource", - "required": [ - "vimConnectionInfo", - "resourceId" - ], + "required": ["vimConnectionInfo", "resourceId"], "type": "object", "properties": { "vimConnectionInfo": { @@ -788,14 +672,12 @@ }, "ResourceHandle": { "title": "ResourceHandle", - "required": [ - "resourceId" - ], + "required": ["resourceId"], "type": "object", "properties": { "resourceId": { "type": "string", - "description": "Identifier of the resource in the scope of the VIM." + "description": "Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2.\n" }, "vimConnectionId": { "type": "string", @@ -803,25 +685,29 @@ }, "vimLevelResourceType": { "type": "string", - "description": "Type of the resource in the scope of the VIM. See note." + "description": "Type of the resource in the scope of the VIM. See note 1.\n" } - } + }, + "description": "NOTE 1: The value set of the \"vimLevelResourceType\" attribute is within the scope of the VIM and can be used as \n information that complements the ResourceHandle. This value set is different from the value set of the \n \"type\" attribute in the ResourceDefinition.\nNOTE 2: When the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the \n following way:\n - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide \n per resource type.\n - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, \n i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by \n Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own \n manifest.\n - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value \n of the 'metadata.name' field in Kubernetes® manifest.\n" }, "VimConnectionInfo": { "title": "VimConnectionInfo", - "required": [ - "id", - "vimType" - ], + "required": ["id", "vimType"], "type": "object", "properties": { "accessInfo": { "type": "object", + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, "description": "'This data 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 8259'" }, "extra": { "type": "object", - "description": "'This data 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 8259'" + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, + "description": "\"'This data type represents a list of key-value pairs. The order of the pairs in the list\nis not significant. In JSON, a set of key-value pairs is represented as an object. It shall\ncomply with the provisions defined in clause 4 of IETF RFC 8259'\"\n" }, "id": { "type": "string", @@ -829,24 +715,24 @@ }, "interfaceInfo": { "type": "object", - "description": "'This data 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 8259'" + "items": { + "$ref": "#/components/schemas/KeyValuePair" + }, + "description": "\"'This data type represents a list of key-value pairs. The order of the pairs in the list\nis not significant. In JSON, a set of key-value pairs is represented as an object. It shall\ncomply with the provisions defined in clause 4 of IETF RFC 8259'\"\n" }, "vimId": { "type": "string", - "description": "The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise." + "description": "The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to\naddress additional information about the VIM if such information has been configured into the\nMEPM by means outside the scope of the present document, and should be absent otherwise.\n" }, "vimType": { "type": "string", - "description": "Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available." + "description": "Discriminator for the different types of the VIM information. The value of this attribute\ndetermines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type\nof the VIM.The set of permitted values is expected to change over time as new types or versions\nof VIMs become available.\n" } } }, "VimSoftwareImage": { "title": "VimSoftwareImage", - "required": [ - "appDSoftwareImageId", - "vimSoftwareImageId" - ], + "required": ["appDSoftwareImageId", "vimSoftwareImageId"], "type": "object", "properties": { "appDSoftwareImageId": { @@ -859,15 +745,14 @@ }, "vimSoftwareImageId": { "type": "string", - "description": "Identifier of the software image in the resource management layer (i.e. VIM)." + "description": "Identifier of the software image in the resource management layer (i.e. VIM) See note.\n" } - } + }, + "description": "NOTE: For an OS container image, the value of this attribute is a string concatenating the name and tag of the image in the CIR separated by a colon ':' with no spaces, e.g. \"dbImage:001\".\n" }, "ZoneGroupInfo": { "title": "ZoneGroupInfo", - "required": [ - "zoneId" - ], + "required": ["zoneId"], "type": "object", "properties": { "zoneId": { @@ -881,10 +766,7 @@ }, "ZoneInfo": { "title": "ZoneInfo", - "required": [ - "id", - "zoneId" - ], + "required": ["id", "zoneId"], "type": "object", "properties": { "id": { @@ -893,7 +775,7 @@ }, "vimConnectionId": { "type": "string", - "description": "" + "description": "\"Identifier of the connection to the VIM that manages the resource zone.The applicable \"VimConnectionInfo\" structure, which is referenced byvimConnectionId, can be obtained from the \" vimConnectionInfo\"\nattribute of the \"AppInstanceInfo\" structure.\"\n" }, "zoneId": { "type": "string", @@ -901,9 +783,69 @@ } } } + }, + "responses": { + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests: used when a rate limiter has triggered.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } } }, - "security": [ - {} - ] + "security": [{}] } \ No newline at end of file diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index cf7b3207ec1fa6f508788d05529813783b8150d8..135c1bc046204c3b9dbbc4457a2808a31bcef496 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management' description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.' - version: '2.2.1' + version: '3.1.1' license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters @@ -11,12 +11,12 @@ info: url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org externalDocs: - description: "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1" - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' + description: "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management" + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema servers: -- url: https://localhost/granting/v1 - variables: {} + - url: https://localhost/granting/v1 + variables: {} tags: - name: granting description: Grant operations @@ -24,143 +24,82 @@ paths: /grants: post: tags: - - granting - summary: 'requests a grant for a particular application lifecycle operation' + - granting + summary: "requests a grant for a particular application lifecycle operation" description: requests a grant for a particular application lifecycle operation operationId: grantPOST parameters: [] requestBody: - content: application/json: schema: - $ref: '#/components/schemas/GrantRequest' + $ref: "#/components/schemas/GrantRequest" required: true responses: - '201': + "201": description: grant was created successfully (synchronous mode) headers: {} content: application/json: schema: - $ref: '#/components/schemas/Grant' - '202': + $ref: "#/components/schemas/Grant" + "202": description: the request was accepted for processing headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /grants/{grantId}: get: tags: - - granting - summary: 'read the grant' + - granting + summary: "read the grant" description: read the grant operationId: GrantGET parameters: - - name: grantId - in: path - description: Identifier of the individual grant. - required: true - style: simple - schema: - type: string + - name: grantId + in: path + description: Identifier of the individual grant. + required: true + style: simple + schema: + type: string responses: - '200': + "200": description: A representation of the "individual grant" resource headers: {} content: application/json: schema: - $ref: '#/components/schemas/Grant' - '202': + $ref: "#/components/schemas/Grant" + "202": description: returned when the process of creating the grant is ongoing, no grant is available yet headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] components: @@ -175,77 +114,109 @@ components: cpProtocolData: type: array items: - $ref: '#/components/schemas/CpProtocolData' + $ref: "#/components/schemas/CpProtocolData" description: Parameters for configuring the network protocols on the link port that connects the CP to a VL. See note. linkPortId: type: string description: Identifier of a pre-configured link port to which the external CP will be associated. See note. + description: | + NOTE: The following conditions apply to the attributes "linkPortId" and " cpProtocolData": + 1) The "linkPortId" and "cpProtocolData" attributes shall both be absent for the deletion of an existing + external CP instance addressed by cpInstanceId. + 2) At least one of these attributes shall be present for a to-be-created external CP instance or an existing + external CP instance. + 3) If the "linkPortId" attribute is absent, the MEPM shall create a link port. + 4) If the "cpProtocolData" attribute is absent, the "linkPortId" attribute shall be provided referencing a precreated link port, and the MEPM can use means outside the scope of the present document to obtain + the pre-configured address information for the connection point from the resource representing the link port. + 5) If both "cpProtocolData" and "linkportId" are provided, the API consumer shall ensure that the + cpProtocolData can be used with the pre-created link port referenced by "linkPortId". + AppExtCpData: title: AppExtCpData required: - - cpConfig - - cpdId + - cpConfig + - cpdId type: object properties: cpConfig: type: array items: - $ref: '#/components/schemas/AppExtCpConfig' + $ref: "#/components/schemas/AppExtCpConfig" description: List of instance data that need to be configured on the CP instances created from the respective CPD. cpdId: type: string description: The identifier of the CPD in the AppD. + ResourceDefinition.Type: title: ResourceDefinition.Type enum: - - COMPUTE - - VL - - STORAGE - - LINKPORT + - COMPUTE + - STORAGE + - LINKPORT + - OSCONTAINER, see note. type: string - description: Type of the resource definition referenced. + description: > + Type of the resource definition referenced. examples: - - COMPUTE + - COMPUTE + CpProtocolData: title: CpProtocolData required: - - layerProtocol + - layerProtocol type: object properties: ipOverEthernet: - $ref: '#/components/schemas/IpOverEthernetAddressData' + type: string + items: + $ref: "#/components/schemas/IpOverEthernetAddressData" + 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. layerProtocol: - $ref: '#/components/schemas/IpOverEthernetAddressData' + type: string + items: + $ref: "#/components/schemas/IpOverEthernetAddressData" + description: "Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note." + description: | + Identifier of layer(s) and protocol(s). Permitted values: IP_OVER_ETHERNET. See note. + NOTE: This attribute allows to signal the addition of further types of layer and protocol in future + versions of the present document in a backwards-compatible way. In the current version of the present + document, only IP over Ethernet is supported. + ExtLinkPortData: title: ExtLinkPortData required: - - id - - resourceHandle + - id + - resourceHandle type: object properties: id: type: string description: Identifier of this link port as provided by the entity that has created the link port. resourceHandle: - $ref: '#/components/schemas/ResourceHandle' + $ref: "#/components/schemas/ResourceHandle" + ExtVirtualLinkData: title: ExtVirtualLinkData required: - - extCps - - id - - resourceId + - extCps + - id + - resourceId type: object properties: extCps: type: array items: - $ref: '#/components/schemas/AppExtCpData' + $ref: "#/components/schemas/AppExtCpData" description: External CPs of the application instance to be connected to this external VL. extLinkPorts: type: array items: - $ref: '#/components/schemas/ExtLinkPortData' - description: Externally provided link ports to be used to connect external connection points to this external VL. If this attribute is not present, the MEPM shall create the link ports on the external VL. + $ref: "#/components/schemas/ExtLinkPortData" + description: | + Externally provided link ports to be used to connect external connection points to this external + VL. If this attribute is not present, the MEPM shall create the link ports on the external VL. id: type: string description: The identifier of the external VL instance. The identifier is assigned by the MEC entity that manages this VL instance. @@ -255,13 +226,14 @@ components: vimConnectionId: type: string description: Identifier of the VIM connection to manage this resource. + Grant: title: Grant required: - - id - - appInstanceId - - appLcmOpOccId - - _links + - id + - appInstanceId + - appLcmOpOccId + - _links type: object properties: id: @@ -275,52 +247,69 @@ components: description: The identifier of the application lifecycle management operation occurrence associated to the Grant. vimConnections: type: array - description: Provides information regarding VIM connections that are approved to be used by the MEPM to allocate resources, and provides parameters of these VIM connections. + description: | + Provides information regarding VIM connections that are approved to be used by the MEPM to + allocate resources, and provides parameters of these VIM connections.See note 1. items: - $ref: '#/components/schemas/VimConnectionInfo' + $ref: "#/components/schemas/VimConnectionInfo" zones: type: array items: - $ref: '#/components/schemas/ZoneInfo' - description: '' + $ref: "#/components/schemas/ZoneInfo" + description: Identifies resource zones where the resources are approved to be allocated by the MEPM. zoneGroups: type: array items: - $ref: '#/components/schemas/ZoneGroupInfo' - description: '' + $ref: "#/components/schemas/ZoneGroupInfo" + description: Information about groups of resource zones that are related and that the MEO has chosen to fulfil a zoneGroup + constraint in the Grant request. addResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: List of resources that are approved to be added, with one entry per resource. tempResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: List of resources that are approved to be temporarily instantiated during the runtime of the lifecycle operation, with + one entry per resource removeResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: List of resources that are approved to be removed, with one entry per resource. updateResources: type: array items: - $ref: '#/components/schemas/GrantInfo' - description: '' + $ref: "#/components/schemas/GrantInfo" + description: List of resources that are approved to be modified, with one entry per resource vimAssets: - $ref: '#/components/schemas/VimAssets' + type: string + $ref: "#/components/schemas/VimAssets" + description: Information about assets for the application that are managed by the MEO in the VIM, such as software images.See note 2. extVirtualLinks: type: array items: - $ref: '#/components/schemas/ExtVirtualLinkData' - description: '' + $ref: "#/components/schemas/ExtVirtualLinkData" + description: Information about external VLs to connect the application instance to. See note 3. additionalParams: - type: object - description: "'This data 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 8259'" + $ref: '#/components/schemas/KeyValuePair' + description: "MEPM, specific to the application and the LCM operation." _links: - $ref: '#/components/schemas/Grant.links' - description: "'This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 '" + description: Links to resources related to this request. + $ref: "#/components/schemas/Grant.links" + description: | + This type represents a grant. Refer to clause 9.5.2.3 of ETSI GS NFV-SOL 003 + NOTE 1: This interface allows to signal the use of multiple VIMs per application. However, due to the partial support of + this feature in the present release, it is recommended in the present document that the number of entries in + the "vims" attribute in the Grant is not greater than 1. + NOTE 2: The further condition will be defined by ETSI GS NFV-SOL 003 [7]. + NOTE 3: External VLs can be passed in the application lifecycle management operation requests such as Instantiate, + and/or in the grant response. The MEO may choose to override in the grant response external VL instances + that have been passed previously in the associated application lifecycle management request, if the lifecycle + management request has originated from the MEO itself + VimAssets: title: VimAssets type: object @@ -328,25 +317,27 @@ components: softwareImages: type: array items: - $ref: '#/components/schemas/VimSoftwareImage' - description: '' + $ref: "#/components/schemas/VimSoftwareImage" + description: "" description: Information about assets for the application that are managed by the MEO in the VIM, such as software images. + Grant.links: title: Grant.links required: - - appLcmOpOcc - - appInstance + - appLcmOpOcc + - appInstance type: object properties: appLcmOpOcc: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" appInstance: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" description: Links to resources related to this resource. + GrantInfo: title: GrantInfo required: - - resourceDefinitionId + - resourceDefinitionId type: object properties: resourceDefinitionId: @@ -354,21 +345,48 @@ components: description: Identifier of the related "ResourceDefinition" structure from the related "GrantRequest" structure. resourceGroupId: type: string - description: Identifier of the "infrastructure resource group", logical grouping of virtual resources assigned to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the VIM connection referenced by "vimConnectionId" applies to multiple infrastructure resource groups, this attribute shall be present for new resources.If the VIM connection referenced by "vimConnectionId" applies to a single infrastructure resource group, this attribute may be present for new resources. This attribute shall be absent for resources that have already been allocated. + description: | + Identifier of the "infrastructure resource group", logical grouping of virtual resources assigned + to a tenant within an Infrastructure Domain, to be provided when allocating the resource.If the + VIM connection referenced by "vimConnectionId" applies to multiple infrastructure resource groups, + this attribute shall be present for new resources.If the VIM connection referenced by "vimConnectionId" + applies to a single infrastructure resource group, this attribute may be present for new resources. + This attribute shall be absent for resources that have already been allocated. vimConnectionId: type: string - description: Identifier of the VIM connection to be used to manage this resource. Shall be present for new resources, and shall be absent for resources that have already been allocated. + description: | + Identifier of the VIM connection to be used to manage this resource. Shall be present for new + resources, and shall be absent for resources that have already been allocated. zoneId: type: string - description: Reference to the identifier of the "ZoneInfo" structure in the "Grant" structure defining the resource zone into which this resource is to be placed. Shall be present for new resources if the zones concept is applicable to them (typically, Compute resources), and shall be absent for resources that have already been allocated. + description: | + Reference to the identifier of the "ZoneInfo" structure in the "Grant" structure defining + the resource zone into which this resource is to be placed. Shall be present for new resources + if the zones concept is applicable to them (typically, Compute resources), and shall be absent + for resources that have already been allocated. + containerNamespace: + type: string + description: > + The value of the namespace in which the MCIOs of an application with containerized components + shall be deployed. This attribute shall be present if the granted resources are managed by a CISM. + The attribute shall be absent if the granted resources are not managed by a CISM. See note. + mcioConstraints: + type: array + items: + $ref: '#/components/schemas/KeyValuePair' + description: > + "'This data 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 8259'" + description: | + NOTE: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + GrantRequest: title: GrantRequest required: - - appInstanceId - - appLcmOpOccId - - appDId - - operation - - _links + - appInstanceId + - appLcmOpOccId + - appDId + - operation + - _links type: object properties: appInstanceId: @@ -381,76 +399,104 @@ components: type: string description: Identifier of this MEC application descriptor. This attribute shall be globally unique. operation: - $ref: '#/components/schemas/GrantRequest.Operation' + $ref: "#/components/schemas/GrantRequest.Operation" + description: The lifecycle management operation for which granting is requested See notes 1 and 2. addResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: List of resource definitions in the AppD for resources to be added by the LCM operation which is related to this grant request, with one entry per resource. tempResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: List of resource definitions in the AppD for resources to be temporarily instantiated during the runtime of the LCM operation which is related to this grant request. See note 3. removeResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: Removed by the LCM operation which is related to this grant request, with one entry per resource. updateResources: type: array items: - $ref: '#/components/schemas/ResourceDefinition' - description: '' + $ref: "#/components/schemas/ResourceDefinition" + description: Provides the definitions of resources to be modified by the LCM operation which is related to this grant request, with one entry per resource. additionalParams: - type: object - description: "'This data 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 8259'" + $ref: '#/components/schemas/KeyValuePair' + description: "MEPM, specific to the application and the LCM operation." _links: - $ref: '#/components/schemas/GrantRequest.links' - description: "'This type represents a grant request. Refer to clause 9.5.2.2 of ETSI GS NFV-SOL 003'" + $ref: "#/components/schemas/GrantRequest.links" + description: | + This type represents a grant request. Refer to clause 9.5.2.2 of ETSI GS NFV-SOL 003 + NOTE 1: Other application LCM operations can be executed by the MEPM without requesting granting. + NOTE 2: If the granting request is for Instantiate, addResources shall be present. + NOTE 3: The MEO will assume that the MEPM will be responsible to both allocate and release the temporary + resource during the runtime of the LCM operation. This means, the resource can be allocated and + consumed after the "start" notification for the LCM operation is sent by the MEPM, and the resource will be + released before the "result" notification of the application LCM operation is sent by the MEPM. + GrantRequest.Operation: title: GrantRequest.Operation enum: - - INSTANTIATE - - OPERATE - - TERMINATE + - INSTANTIATE + - OPERATE + - TERMINATE type: string description: "'The lifecycle management operation for which granting is requested'" examples: - - INSTANTIATE + - INSTANTIATE + GrantRequest.links: title: GrantRequest.links required: - - appLcmOpOcc - - appInstance + - appLcmOpOcc + - appInstance type: object properties: appLcmOpOcc: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" appInstance: - $ref: '#/components/schemas/LinkType' + $ref: "#/components/schemas/LinkType" description: Links to resources related to this resource. + IpOverEthernetAddressData: title: IpOverEthernetAddressData type: object properties: macAddress: type: string - description: "'MAC address. If this attribute is not present, it shall be chosen by the VIM'" + description: | + "'MAC address. If this attribute is not present, it shall be chosen by the VIM. See note 1.'" ipAddresses: type: array items: - $ref: '#/components/schemas/IpAddress' - 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. - description: "'This type represents network address data for IP over Ethernet. Refer to clause 4.4.1.10c of ETSI GS NFV SOL 003'" + $ref: "#/components/schemas/IpAddress" + 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. See note 1. + description: | + NOTE 1: At least one of "macAddress" or "ipAddresses" shall be present. + NOTE 2: Exactly one of "fixedAddresses", "numDynamicAddresses" or "ipAddressRange" shall be present. + + KeyValuePair: + description: | + This data 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 8259. + type: object + properties: + key: + type: string + value: + type: string + IpAddress: title: IpAddress required: - - type + - type type: object properties: type: - $ref: '#/components/schemas/IpAddress.Type' + $ref: "#/components/schemas/IpAddress.Type" fixedAddresses: type: array items: @@ -459,27 +505,29 @@ components: numDynamicAddresses: type: integer description: Number of dynamic addresses to assign (from the subnet defined by subnetId if provided) - contentEncoding: int32 + format: int32 addressRange: - $ref: '#/components/schemas/AddressRange' + $ref: "#/components/schemas/AddressRange" subnetId: type: string description: Subnet defined by the identifier of the subnet resource in the VIM. description: "'IP addresses to assign to the CP instance. Each entry represents IP address data for fixed or dynamic IP address assignment per subnet.'" + IpAddress.Type: title: IpAddress.Type enum: - - IPV4 - - IPV6 + - IPV4 + - IPV6 type: string description: The type of the IP addresses. examples: - - IPV4 + - IPV4 + AddressRange: title: AddressRange required: - - minAddress - - maxAddress + - minAddress + - maxAddress type: object properties: minAddress: @@ -489,15 +537,17 @@ components: type: string description: Highest IP address belonging to the range. description: An IP address range to be used, e.g. in case of egress connections. + LinkType: title: LinkType required: - - href + - href type: object properties: href: type: string description: URI referring to a resource + ProblemDetails: title: ProblemDetails type: object @@ -511,94 +561,148 @@ components: status: type: integer description: The HTTP status code for this occurrence of the problem - contentEncoding: int32 + format: int32 title: type: string description: A short, human-readable summary of the problem type type: type: string description: A URI reference according to IETF RFC 3986 that identifies the problem type + ResourceDefinition: title: ResourceDefinition required: - - id - - type - - resourceTemplateId - - resource + - id + - type + - resourceTemplateId + - resource type: object properties: id: type: string description: Identifier of the related ResourceDefinition structure from the related GrantRequest structure. type: - $ref: '#/components/schemas/ResourceDefinition.Type' + $ref: "#/components/schemas/ResourceDefinition.Type" + description: Type of the resource definition referenced.See note vduId: type: string description: Reference to the related VDU in the AppD applicable to this resource. resourceTemplateId: - type: string - description: Reference to a resource template, i.e. VirtualComputeDescriptor, AppExtCpd, VirtualStorageDescriptor in the AppD. + description: > + Reference to a resource template, in the AppD as follows: + - If type="COMPUTE": VirtualComputeDescriptor, + - If type="LINKPORT": AppExtCpd, + - If type="STORAGE": VirtualStorageDescriptor + - If type="OSCONTAINER": osContainerDescriptor + Cardinality may be greater than "1" when + Type ="OSCONTAINER" and multiple references to + OsContainerDescriptor are present in the AppD. Cardinality + shall be "1" otherwise. + type: array + items: + type: string resource: - $ref: '#/components/schemas/Resource' - description: "'This type provides information of an existing or proposed resource used by the application. Refer to clause 9.5.3.2 of ETSI GS NFV-SOL 003 '" + $ref: "#/components/schemas/Resource" + description: | + This type provides information of an existing or proposed resource used by the application. Refer to clause 9.5.3.2 of ETSI GS NFV-SOL 003 + NOTE: This permitted value reflects the ETSI NFV interpretation of the cloud native workloads. + Resource: title: Resource required: - - vimConnectionInfo - - resourceId + - vimConnectionInfo + - resourceId type: object properties: vimConnectionInfo: - $ref: '#/components/schemas/VimConnectionInfo' + $ref: "#/components/schemas/VimConnectionInfo" resourceId: type: string description: Identifier of the resource in the scope of the VIM. description: Resource information for an existing resource + ResourceHandle: title: ResourceHandle required: - - resourceId + - resourceId type: object properties: resourceId: type: string - description: Identifier of the resource in the scope of the VIM. + description: | + Identifier of the resource in the scope of the VIM or the CISM or the resource provider. See note 2. vimConnectionId: type: string description: Identifier of the VIM connection to manage the resource.The applicable "VimConnectionInfo" structure, which is referenced by vimConnectionId, can be obtained from the "vimConnectionInfo" attribute of the "AppInstance" structure. vimLevelResourceType: type: string - description: Type of the resource in the scope of the VIM. See note. + description: > + Type of the resource in the scope of the VIM. See note 1. + description: | + NOTE 1: The value set of the "vimLevelResourceType" attribute is within the scope of the VIM and can be used as + information that complements the ResourceHandle. This value set is different from the value set of the + "type" attribute in the ResourceDefinition. + NOTE 2: When the container infrastructure service is a Kubernetes® instance the resourceId shall be populated in the + following way: + - For a compute MCIO, it is the instance identifier that Kubernetes® assigns, which is unique cluster wide + per resource type. + - For a storage MCIO modelled as a persistent volume claim, it is the name of the persistent volume claim, + i.e. the value of the 'claimName' field in the Kubernetes® manifest, or a compound name built by + Kubernetes® if the persistent volume claim is defined inline in another template instead of in its own + manifest. + - For a network MCIO representing a NetworkAttachmentDefinition, a Service or an Ingress, it is the value + of the 'metadata.name' field in Kubernetes® manifest. + VimConnectionInfo: title: VimConnectionInfo required: - - id - - vimType + - id + - vimType type: object properties: accessInfo: type: object + items: + $ref: "#/components/schemas/KeyValuePair" description: "'This data 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 8259'" extra: type: object - description: "'This data 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 8259'" + items: + $ref: "#/components/schemas/KeyValuePair" + description: | + "'This data 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 8259'" id: type: string description: The identifier of the VIM Connection. This identifier is managed by the MEO. interfaceInfo: type: object - description: "'This data 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 8259'" + items: + $ref: "#/components/schemas/KeyValuePair" + description: | + "'This data 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 8259'" vimId: type: string - description: The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise. + description: | + The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to + address additional information about the VIM if such information has been configured into the + MEPM by means outside the scope of the present document, and should be absent otherwise. vimType: type: string - description: Discriminator for the different types of the VIM information. The value of this attribute determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available. + description: | + Discriminator for the different types of the VIM information. The value of this attribute + determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type + of the VIM.The set of permitted values is expected to change over time as new types or versions + of VIMs become available. + VimSoftwareImage: title: VimSoftwareImage required: - - appDSoftwareImageId - - vimSoftwareImageId + - appDSoftwareImageId + - vimSoftwareImageId type: object properties: appDSoftwareImageId: @@ -609,11 +713,15 @@ components: description: Identifier of the VIM connection to access the software image referenced in this structure. vimSoftwareImageId: type: string - description: Identifier of the software image in the resource management layer (i.e. VIM). + description: > + Identifier of the software image in the resource management layer (i.e. VIM) See note. + description: | + NOTE: For an OS container image, the value of this attribute is a string concatenating the name and tag of the image in the CIR separated by a colon ':' with no spaces, e.g. "dbImage:001". + ZoneGroupInfo: title: ZoneGroupInfo required: - - zoneId + - zoneId type: object properties: zoneId: @@ -621,21 +729,63 @@ components: items: type: string description: References of identifiers of "ZoneInfo" structures, each of which provides information about a resource zone that belongs to this group. + ZoneInfo: title: ZoneInfo required: - - id - - zoneId + - id + - zoneId type: object properties: id: type: string description: Identifier of the connection to the VIM that manages the resource zone. The applicable "VimConnectionInfo" structure, which is referenced by vimConnectionId, can be obtained from the " vimConnectionInfo" attribute of the "AppInstanceInfo" structure. - vimConnectionId: + vimConnectionId: type: string - description: '' + description: | + "Identifier of the connection to the VIM that manages the resource zone.The applicable "VimConnectionInfo" structure, which is referenced byvimConnectionId, can be obtained from the " vimConnectionInfo" + attribute of the "AppInstanceInfo" structure." zoneId: type: string description: The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). + + responses: + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests: used when a rate limiter has triggered.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + security: -- {} + - {} diff --git a/MEC010-2_AppLcm.json b/MEC010-2_AppLcm.json index bf70293bf5d23ce7ef536651de1da67304a9b1a0..6c54be67af1fc71cd84427c722b944fa8c345b41 100644 --- a/MEC010-2_AppLcm.json +++ b/MEC010-2_AppLcm.json @@ -12,11 +12,11 @@ "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", "email": "cti_support@etsi.org" }, - "version": "2.2.1" + "version": "3.1.1" }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.1.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf" }, "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "tags": [ @@ -38,15 +38,13 @@ "paths": { "/app_instances": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "Create an application instance resource", "description": "Create an application instance resource", "operationId": "appInstancePOST", "parameters": [], "requestBody": { - "description": "", + "description": "The POST method is used to create an application instance resource.", "content": { "application/json": { "schema": { @@ -69,78 +67,28 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "get": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "Queries information relating to on-boarded application packages in the MEO", "description": "queries information relating to on-boarded application packages in the MEO", "operationId": "appInstanceGET", @@ -207,77 +155,28 @@ "items": { "$ref": "#/components/schemas/AppInstanceInfo" }, - "description": "", - "contentMediaType": "application/json" + "description": "" } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -286,9 +185,7 @@ }, "/app_instances/{appInstanceId}": { "get": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "Retrieves the information of an individual application instance via reading an individual application instance.", "description": "Retrieves the information of an individual application instance via reading an individual application instance.", "operationId": "appInstanceIdGET", @@ -317,78 +214,28 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "delete": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "Deletes an individual application instance resource.", "description": "Deletes an individual application instance resource.", "operationId": "appInstanceIdDELETE", @@ -411,81 +258,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -494,9 +282,7 @@ }, "/subscriptions": { "post": { - "tags": [ - "app-lcm-notifications" - ], + "tags": ["app-lcm-notifications"], "summary": "subscribe to the notification of application instance related change", "description": "subscribe to the notification of application instance related change", "operationId": "appLcmSubscriptionsPOST", @@ -518,8 +304,7 @@ { "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionRequest" } - ], - "contentMediaType": "application/json" + ] } } }, @@ -545,77 +330,28 @@ { "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionInfo" } - ], - "contentMediaType": "application/json" + ] } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "callbacks": { @@ -658,9 +394,7 @@ "deprecated": false }, "get": { - "tags": [ - "app-lcm-notifications" - ], + "tags": ["app-lcm-notifications"], "summary": "Retrieves the information of multiple subscriptions to notifications related to an application instance.", "description": "Retrieves the information of multiple subscriptions to notifications related to an application instance.", "operationId": "appLcmSubscriptionsGET", @@ -689,70 +423,22 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -761,9 +447,7 @@ }, "/subscriptions/{subscriptionId}": { "get": { - "tags": [ - "app-lcm-notifications" - ], + "tags": ["app-lcm-notifications"], "summary": "Used to represent an individual subscription to notifications about application package changes.", "description": "Used to represent an individual subscription to notifications about application package changes.", "operationId": "individualSubscriptionGET", @@ -799,85 +483,34 @@ { "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionInfo" } - ], - "contentMediaType": "application/json" + ] } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false }, "delete": { - "tags": [ - "app-lcm-notifications" - ], + "tags": ["app-lcm-notifications"], "summary": "Deletes the individual subscription to notifications about application package changes in MEO.", "description": "Deletes the individual subscription to notifications about application package changes in MEO.", "operationId": "individualSubscriptionDELETE", @@ -899,49 +532,23 @@ "headers": {}, "content": {} }, + "400": { + "$ref": "#/components/responses/400" + }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -950,9 +557,7 @@ }, "/user_defined_notification": { "post": { - "tags": [ - "app-lcm-notifications" - ], + "tags": ["app-lcm-notifications"], "summary": "Delivers a notification from the application lifecycle management resource to the subscriber.", "description": "Delivers a notification from the application lifecycle management resource to the subscriber.", "operationId": "appInstNotificationPOST", @@ -975,8 +580,7 @@ { "$ref": "#/components/schemas/AppInstanceIdentifierDeletionNotification" } - ], - "contentMediaType": "application/json" + ] } } }, @@ -988,60 +592,23 @@ "headers": {}, "content": {} }, + "400": { + "$ref": "#/components/responses/400" + }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1050,9 +617,7 @@ }, "/app_instances/{appInstanceId}/instantiate": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "Deletes the individual subscription to notifications about application package changes in MEO.", "description": "task of instantiating an application instance.", "operationId": "appLcmInstanciatePOST", @@ -1086,81 +651,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1169,9 +675,7 @@ }, "/app_instances/{appInstanceId}/terminate": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "terminate an application instance.", "description": "terminate an application instance.", "operationId": "appLcmTerminatePOST", @@ -1205,81 +709,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1288,9 +733,7 @@ }, "/app_instances/{appInstanceId}/operate": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "change the operational state, i.e. start or stop, of the application instance", "description": "change the operational state, i.e. start or stop, of the application instance", "operationId": "appLcmOperatePOST", @@ -1324,81 +767,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1407,9 +791,7 @@ }, "/app_lcm_op_occs": { "get": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "retrieves information of operation status about multiple application instance lifecycle management operation occurrences", "description": "retrieves information of operation status about multiple application instance lifecycle management operation occurrences", "operationId": "appLcmOpOccsGET", @@ -1476,77 +858,28 @@ "items": { "$ref": "#/components/schemas/AppLcmOpOcc" }, - "description": "", - "contentMediaType": "application/json" + "description": "" } } } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1555,9 +888,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}": { "get": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "reads the status information of an individual application LCM operation occurrence", "description": "reads the status information of an individual application LCM operation occurrence", "operationId": "appLcmOpOccsbyIdGET", @@ -1586,70 +917,22 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1658,9 +941,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}/cancel": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "cancel an ongoing application lifecycle operation whose related \"Individual application LCM operation occurrence\" resource is in \"PROCESSING\" state.", "description": "cancel an ongoing application lifecycle operation whose related \"Individual application LCM operation occurrence\" resource is in \"PROCESSING\" state.", "operationId": "appLcmCancelPOST", @@ -1694,81 +975,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1777,9 +999,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}/fail": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "marks an application lifecycle management operation occurrence as \"finally failed\"", "description": "marks an application lifecycle management operation occurrence as \"finally failed\"", "operationId": "appLcmFailPOST", @@ -1808,81 +1028,22 @@ } }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1891,9 +1052,7 @@ }, "/app_lcm_op_occs/{appLcmOpOccId}/retry": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "initiate retrying an application lifecycle operation that has experience a temporary failure", "description": "initiate retrying an application lifecycle operation that has experience a temporary failure", "operationId": "appLcmRetryPOST", @@ -1916,81 +1075,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -1999,9 +1099,7 @@ }, "/app_instances/{appInstanceId}/configure_platform_for_app": { "post": { - "tags": [ - "app-lcm" - ], + "tags": ["app-lcm"], "summary": "provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance.", "description": "provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance.", "operationId": "appInstancesConfigPlatformPOST", @@ -2018,7 +1116,7 @@ } ], "requestBody": { - "description": "The payload body in the request contains the information necessary to provide configuration information in AppD", + "description": "The message content in the request contains the information necessary to provide configuration information in AppD", "content": { "application/json": { "schema": { @@ -2034,81 +1132,22 @@ "content": {} }, "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/400" }, "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/401" }, "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/404" }, "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/406" }, "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } + "$ref": "#/components/responses/429" } }, "deprecated": false @@ -2135,18 +1174,28 @@ "description": "'Identifier of the subscription to application LCM operation occurrence notification'" }, "operationState": { + "type": "object", + "description": "Operation state", "$ref": "#/components/schemas/OperationState" }, "stateEnteredTime": { + "type": "object", + "description": "Date and time when the current state was entered.", "$ref": "#/components/schemas/TimeStamp" }, "startTime": { + "type": "object", + "description": "Date and time of the start of the operation.", "$ref": "#/components/schemas/TimeStamp" }, "lcmOperation": { + "type": "object", + "description": "Date and time of the start of the operation.", "$ref": "#/components/schemas/LcmOperation" }, "operationParams": { + "type": "object", + "description": "Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. See note 2.", "$ref": "#/components/schemas/OperationParams" }, "isCancelPending": { @@ -2154,28 +1203,30 @@ "description": "If the application LCM operation occurrence operationState is in \"PROCESSING\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false." }, "cancelMode": { + "type": "object", + "description": "The mode of a cancellation.", "$ref": "#/components/schemas/CancelMode" }, "_links": { + "type": "object", + "description": "Links to resources related to this resource.", "$ref": "#/components/schemas/AppInstanceLcmOpOcc.links" } }, - "description": "'This data type represents an application lifecycle management operation occurrence'" + "description": "This data type represents an application lifecycle management operation occurrence\nNOTE 1: Void.\nNOTE 2: This object contains structured data, and shall comply with the provisions of clause 4 of IETF RFC 8259 \n" }, "AppInstanceSubscriptionLinkList": { - "required": [ - "_links" - ], + "required": ["_links"], "properties": { "_links": { + "type": "object", + "description": "List of hyperlinks related to the resource.", "$ref": "#/components/schemas/AppInstanceSubscriptionLinkList._links" } } }, "AppInstanceSubscriptionLinkList._links": { - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { @@ -2184,6 +1235,7 @@ }, "subscriptions": { "type": "array", + "description": "A link list to the subscriptions.", "items": { "$ref": "#/components/schemas/AppInstanceSubscriptionLinkList._links.subscriptions" } @@ -2192,16 +1244,16 @@ }, "AppInstanceSubscriptionLinkList._links.subscriptions": { "type": "object", - "required": [ - "href", - "subscriptionType" - ], + "required": ["href", "subscriptionType"], "properties": { "href": { "type": "string", - "format": "uri" + "format": "uri", + "description": "The URI referring to the subscription." }, "subscriptionType": { + "type": "object", + "description": "Type of the subscription.", "$ref": "#/components/schemas/AppInstanceSubscriptionType" } } @@ -2232,36 +1284,32 @@ "CancelMode": { "description": "Indicates the intervention action to be taken. GRACEFUL Indicates ongoing resource management operations in the underlying system are allowed to complete execution or time out. FORCED Indicates ongoing resource management operations in the underlying system are to be cancelled without allowing them to complete execution or time out.", "type": "string", - "enum": [ - "GRACEFUL", - "FORCED" - ] + "enum": ["GRACEFUL", "FORCED"] }, "AppInstIdCreationSubscriptionRequest": { "type": "object", - "required": [ - "subscriptionType", - "callbackUri" - ], + "required": ["subscriptionType", "callbackUri"], "properties": { "subscriptionType": { - "type": "string" + "type": "string", + "description": "Shall be set to \"AppIdentifierCreationSubscription\"." }, "callbackUri": { "type": "string", + "description": "The URI of the endpoint for the subscription related notification to be sent to.", "format": "uri" }, "appInstanceSubscriptionFilter": { + "type": "object", + "description": "Criteria used to filter application instances for which to send notifications related to this subscription. See note.", "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" } - } + }, + "description": "NOTE: If present, the value of attribute \"appInstSelectorType\" in appInstanceSubscriptionFilter can only be set as \"APP_D_ID\" or \"APP_FROM_PROVIDER\".\n" }, "AppInstIdDeletionSubscriptionRequest": { "type": "object", - "required": [ - "subscriptionType", - "callbackUri" - ], + "required": ["subscriptionType", "callbackUri"], "properties": { "subscriptionType": { "type": "string", @@ -2269,42 +1317,46 @@ }, "callbackUri": { "type": "string", - "format": "uri" + "format": "uri", + "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "appInstanceSubscriptionFilter": { + "type": "object", + "description": "Criteria used to filter application instances for which to send notifications related to this subscription.", "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" } } }, "AppInstIdCreationSubscriptionInfo": { "type": "object", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of the subscription to application instance operational state change notification." }, "subscriptionType": { - "type": "string" + "type": "string", + "description": "Shall be set to \"AppIdentifierCreationSubscription\"." }, "callbackUri": { "type": "string", - "format": "uri" + "format": "uri", + "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "appInstanceSubscriptionFilter": { + "type": "object", + "description": "Criteria used to select application instances on which to send notifications related to this subscription.", "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" }, "_links": { "type": "object", - "required": [ - "self" - ], + "description": "Links to resources related to this resource.", + "required": ["self"], "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } } @@ -2313,15 +1365,11 @@ }, "AppInstIdDeletionSubscriptionInfo": { "type": "object", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of the subscription to application instance operational state change notification." }, "subscriptionType": { "type": "string", @@ -2329,18 +1377,20 @@ }, "callbackUri": { "type": "string", - "format": "uri" + "format": "uri", + "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "appInstanceSubscriptionFilter": { "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" }, "_links": { "type": "object", - "required": [ - "self" - ], + "description": "Links to resources related to this resource.", + "required": ["self"], "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } } @@ -2349,16 +1399,17 @@ }, "AppInstanceLcmOpOcc.links": { "title": "AppInstanceLcmOpOcc.links", - "required": [ - "self", - "appInstance" - ], + "required": ["self", "appInstance"], "type": "object", "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" }, "appInstance": { + "type": "object", + "description": "Link to the application instance that the operation applies to.", "$ref": "#/components/schemas/LinkType" } }, @@ -2366,12 +1417,7 @@ }, "AppLcmOpOccSubscriptionInfo": { "title": "AppLcmOpOccSubscriptionInfo", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "type": "object", "properties": { "id": { @@ -2382,19 +1428,19 @@ "const": "AppLcmOpOccStateChange", "type": "string", "description": "Shall be set to \"AppLcmOpOccStateChangeSubscription\".", - "examples": [ - "AppLcmOpOccStateChange" - ] + "examples": ["AppLcmOpOccStateChange"] }, "callbackUri": { "type": "string", "description": "The URI of the endpoint for the notification to be sent to." }, "appLcmOpOccSubscriptionFilter": { + "type": "object", "$ref": "#/components/schemas/AppLcmOpOccSubscriptionFilter", "description": "Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription." }, "_links": { + "type": "object", "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo.links" } }, @@ -2402,12 +1448,12 @@ }, "AppLcmOpOccSubscriptionInfo.links": { "title": "AppLcmOpOccSubscriptionInfo.links", - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } }, @@ -2415,12 +1461,7 @@ }, "AppInstSubscriptionInfo": { "title": "AppInstSubscriptionInfo", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], + "required": ["id", "subscriptionType", "callbackUri", "_links"], "type": "object", "properties": { "id": { @@ -2431,19 +1472,16 @@ "const": "AppInstanceStateChange", "type": "string", "description": "Shall be set to \"AppInstanceStateChangeSubscription\".", - "examples": [ - "AppInstanceStateChangeSubscription" - ] + "examples": ["AppInstanceStateChangeSubscription"] }, "appInstanceState": { "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "STARTED", - "STOPPED" - ] + "description": "Application instance state subscribed to.", + "enum": ["NOT_INSTANTIATED", "STARTED", "STOPPED"] }, "appInstanceSubscriptionFilter": { + "type": "object", + "description": "Criteria used to select application instances on which to send notifications related to this subscription.", "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" }, "callbackUri": { @@ -2451,6 +1489,7 @@ "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "_links": { + "type": "object", "$ref": "#/components/schemas/AppInstSubscriptionInfo.links" } }, @@ -2458,12 +1497,12 @@ }, "AppInstSubscriptionInfo.links": { "title": "AppInstSubscriptionInfo.links", - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { + "type": "object", + "description": "URI of this resource.", "$ref": "#/components/schemas/LinkType" } }, @@ -2471,17 +1510,17 @@ }, "AppLcmOpOccSubscriptionRequest": { "title": "AppLcmOpOccSubscriptionRequest", - "required": [ - "callbackUri", - "subscriptionType" - ], + "required": ["callbackUri", "subscriptionType"], "type": "object", "properties": { "appLcmOpOccSubscriptionFilter": { + "type": "object", + "description": "Subscription filter criteria to match specific application LCM operation occurrences.", "$ref": "#/components/schemas/AppLcmOpOccSubscriptionFilter" }, "callbackUri": { - "type": "string" + "type": "string", + "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "subscriptionType": { "type": "string", @@ -2494,17 +1533,28 @@ "type": "object", "properties": { "appInstanceSubscriptionFilter": { + "type": "object", + "description": "If present, this attribute contains filter criteria that selects one or more application instances on which to receive \"LCM operation occurrence\" notifications.", "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" }, "notificationTypes": { + "type": "string", "description": "Match particular notification types. Permitted values AppLcmOpOccNotification.", "$ref": "#/components/schemas/NotificationTypes" }, "operationStates": { - "$ref": "#/components/schemas/OperationStates" + "type": "array", + "description": "Type of the LCM operation state represented by this application instance LCM operation occurrence.", + "items": { + "$ref": "#/components/schemas/OperationState" + } }, "operationTypes": { - "$ref": "#/components/schemas/OperationTypes" + "type": "array", + "description": "Type of the LCM operation represented by this application instance LCM operation occurrence.", + "items": { + "$ref": "#/components/schemas/OperationTypes" + } } } }, @@ -2513,43 +1563,18 @@ "const": "AppLcmOperationOccurrenceNotification", "type": "string", "description": "Match particular notification types.", - "examples": [ - "AppLcmOperationOccurrenceNotification" - ] - }, - "OperationStates": { - "title": "OperationStates", - "enum": [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED", - "FAILED_TEMP" - ], - "type": "string", - "description": "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'", - "examples": [ - "STARTING" - ] + "examples": ["AppLcmOperationOccurrenceNotification"] }, "OperationTypes": { "title": "OperationTypes", - "enum": [ - "INSTANTIATE", - "OPERATE", - "TERMINATE" - ], + "enum": ["INSTANTIATE", "OPERATE", "TERMINATE"], "type": "string", "description": "'Type of the LCM operation represented by this application instance LCM operation occurrence.'", - "examples": [ - "INSTANTIATE" - ] + "examples": ["INSTANTIATE"] }, "MepInformation": { "type": "object", - "required": [ - "mepId" - ], + "required": ["mepId"], "properties": { "mepId": { "type": "string", @@ -2563,9 +1588,7 @@ }, "CreateAppInstanceRequest": { "title": "CreateAppInstanceRequest", - "required": [ - "appDId" - ], + "required": ["appDId"], "type": "object", "properties": { "appDId": { @@ -2581,47 +1604,46 @@ "description": "Human-readable name of the application instance to be created." }, "appPlacementInfo": { - "description": "Describes the information of selected MEC platform for the application instance to associate", + "type": "object", + "description": "Describes the information of selected MEC platform for the application instance to associate. See note.", "$ref": "#/components/schemas/MepInformation" } - } + }, + "description": "NOTE: This field applies to Mm3* reference point only.\n" }, "AppInstSubscriptionRequest": { "title": "AppInstSubscriptionRequest", - "required": [ - "subscriptionType", - "callbackUri" - ], + "required": ["subscriptionType", "callbackUri"], "type": "object", "properties": { "subscriptionType": { "const": "AppInstanceStateChange", "type": "string", "description": "Shall be set to \"AppInstanceStateChangeSubscription\".", - "examples": [ - "AppInstanceStateChange" - ] + "examples": ["AppInstanceStateChange"] }, "callbackUri": { "type": "string", "description": "The URI of the endpoint for the notification to be sent to." }, "appInstanceState": { + "type": "object", "$ref": "#/components/schemas/AppInstanceState" }, "appInstanceSubscriptionFilter": { + "type": "object", + "description": "Criteria used to filter application instances for which to send notifications related to this subscription.", "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" } } }, "AppInstanceSubscriptionFilter": { "title": "AppInstanceSubscriptionFilter", - "required": [ - "appInstSelectorType" - ], + "required": ["appInstSelectorType"], "type": "object", "properties": { "appInstSelectorType": { + "type": "object", "$ref": "#/components/schemas/AppInstSelectorType" }, "appInstances": { @@ -2629,23 +1651,20 @@ "items": { "type": "string" }, - "description": "" + "description": "If appInstIdSelector = APP_IDENTITY match existing application instances with an \"application instance identifier\" listed in this attribute.\nIf appInstIdSelector = APP_NAME match existing application instances with an \"application instance name\" listed in this attribute.\nIf appInstIdSelector = APP_D_ID match existing application instances, or those created in the future whilst the subscription is active, based on the application descriptors identified by one of the \"application descriptor identities\" listed in this attribute.\nIf appInstIdSelector = APP_FROM_PROVIDER this attribute shall not be included.\n" }, "appsFromProviders": { "type": "array", "items": { "$ref": "#/components/schemas/AppsFromProviders" - }, - "description": "" + } } }, "description": "'This data type represents subscription filter criteria to match application instances. '" }, "AppsFromProviders": { "title": "AppsFromProviders", - "required": [ - "appProvider" - ], + "required": ["appProvider"], "type": "object", "properties": { "appProvider": { @@ -2653,16 +1672,18 @@ "description": "Provider of the application and of the AppD." }, "appProducts": { - "$ref": "#/components/schemas/AppProducts" + "type": "array", + "description": "If present, match application instances that belong to application products with certain product names, from one particular provider.", + "items": { + "$ref": "#/components/schemas/AppProducts" + } } }, "description": "'Present only if appInstIdSelector = APP_FROM_PROVIDER. Match existing application instances, or those created in the future whilst the subscription is active, that belong to applications from certain providers.'" }, "AppProducts": { "title": "AppProducts", - "required": [ - "appName" - ], + "required": ["appName"], "type": "object", "properties": { "appName": { @@ -2670,16 +1691,17 @@ "description": "Name to identify the MEC application." }, "versions": { - "$ref": "#/components/schemas/AppProducts.Versions" + "type": "array", + "items": { + "$ref": "#/components/schemas/AppProducts.Versions" + } } }, "description": "'If present, match application instances that belong to application products with certain product names, from one particular provider.'" }, "AppProducts.Versions": { "title": "AppProducts.Versions", - "required": [ - "appSoftVersion" - ], + "required": ["appSoftVersion"], "type": "object", "properties": { "appSoftVersion": { @@ -2707,22 +1729,14 @@ ], "type": "string", "description": "0 = void", - "examples": [ - "VOID" - ] + "examples": ["VOID"] }, "AppInstanceState": { "title": "AppInstanceState", - "enum": [ - "NOT_INSTANTIATED", - "STARTED", - "STOPPED" - ], + "enum": ["NOT_INSTANTIATED", "STARTED", "STOPPED"], "type": "string", "description": "Only send notifications for application instances that are in one of the states listed in this attribute. If this attribute is absent, match all states.", - "examples": [ - "NOT_INSTANTIATED" - ] + "examples": ["NOT_INSTANTIATED"] }, "AppInstNotification": { "title": "AppInstNotification", @@ -2730,6 +1744,7 @@ "_links", "appDId", "appInstanceId", + "appInstanceState", "appPkgId", "id", "notificationType", @@ -2739,6 +1754,7 @@ "type": "object", "properties": { "_links": { + "type": "object", "$ref": "#/components/schemas/Links" }, "appDId": { @@ -2766,46 +1782,101 @@ "description": "Identifier of the subscription related to this notification." }, "timeStamp": { + "type": "object", + "description": "Date and time of the notification generation.", "$ref": "#/components/schemas/TimeStamp" }, "appInstLocation": { + "type": "string", + "description": "Location of the MEC application instance. Shall be present if the application instance is instantiated and shall be absent otherwise.", "$ref": "#/components/schemas/LocationInformation" }, "appInstanceState": { "type": "string", - "enum": [ - "NOT_INSTANTIATED", - "STARTED", - "STOPPED" - ] + "description": "Application instance state", + "enum": ["NOT_INSTANTIATED", "STARTED", "STOPPED"] } } }, "LocationInformation": { "type": "object", - "required": [ - "countryCode" - ], + "required": ["countryCode"], "properties": { "countryCode": { - "type": "string" + "type": "string", + "description": "The two-letter ISO 3166 country code in capital letters where an instance is deployed." }, "civicAddress": { + "type": "object", + "description": "Provides the civic address of the site hosting the MEC application instance.", "$ref": "#/components/schemas/LocationInformation.civicAddress" }, "geographicalPosition": { - "type": "string" + "type": "string", + "description": "Geographical position (i.e. latitude and longitude) where an instance is deployed. The content of this attribute shall follow the provisions for the \"Point\" geometry object as defined in IETF RFC 7946" } - } + }, + "description": "NOTE: At least one of civicAddress or geographicalPosition shall be present. If both are present they shall specify the same location, bound by the precision of the provided coordinates.\n" }, - "LocationInformation.civicAddress": { + "McioInfo": { "type": "object", "required": [ - "civicAddressElement" + "mcioId", + "mcioName", + "mcioNamespace", + "vduId", + "cismId", + "mcioType", + "desiredInstances", + "availableInstances" ], + "properties": { + "mcioId": { + "type": "string", + "description": "Identifier of this MCIO, created by the CISM." + }, + "mcioName": { + "type": "string", + "description": "Human readable name of this MCIO." + }, + "mcioNamespace": { + "type": "string", + "description": "Namespace of this MCIO" + }, + "vduId": { + "type": "string", + "description": "Reference to the applicable Vdu information element in the VNFD." + }, + "cismId": { + "type": "string", + "description": "Identifier of the CISM managing this MCIO." + }, + "mcioType": { + "type": "string", + "description": "The type of MCIO. See note 1." + }, + "desiredInstances": { + "type": "integer", + "description": "Number of desired MCIO instances." + }, + "availableInstances": { + "type": "integer", + "description": "Number of available MCIO instances" + }, + "additionalInfo": { + "type": "string", + "description": "Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2" + } + }, + "description": "NOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from the CISM.\nEXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the \"kind\" property of the declarative descriptor.\nNOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and desired state of the MCIO(s)\n" + }, + "LocationInformation.civicAddress": { + "type": "object", + "required": ["civicAddressElement"], "properties": { "civicAddressElement": { "type": "array", + "description": "Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776.", "items": { "$ref": "#/components/schemas/CivicAddressElement" } @@ -2847,6 +1918,21 @@ "type": "string", "description": "Provider of the application and of the AppD." }, + "nsInstanceId": { + "type": "string", + "description": "Identifier of the NS instance created by NFVO in which the MEC application has been instantiated as a VNF instance. See note 2\n" + }, + "vnfInstanceId": { + "type": "string", + "description": "Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as. See note 2.\n" + }, + "communicationInterface": { + "type": "string", + "description": "Interface for communication with other application instances. See clause 7.5.2 of ETSI GS MEC 021 [13] for the data type definition.", + "items": { + "$ref": "#/components/schemas/CommunicationInterface" + } + }, "appName": { "type": "string", "description": "Name to identify the MEC application." @@ -2868,7 +1954,7 @@ "items": { "$ref": "#/components/schemas/VimConnectionInfo" }, - "description": "" + "description": "Information about VIM connections to be used for managing the resources for the application instance. The keys of the map, each of which identifies information about a particular VIM connection, are managed by the MEO and referenced from other data structures via the \"vimConnectionId\" attribute. See notes 1 and 3." }, "instantiationState": { "$ref": "#/components/schemas/InstantiationState" @@ -2880,7 +1966,7 @@ "$ref": "#/components/schemas/AppInstanceInfo.links" } }, - "description": "'The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.'" + "description": "The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.\nNOTE 1: This field does not apply if the data structure is used by MEAO.\nNOTE 2: This field applies if the data structure is used by MEAO.\nNOTE 3: This field does not apply if the data structure is used on Mm3*.\nNOTE 4: This field applies if the data structure is used on Mm3*.\nNOTE 5: This field applies if the data structure is used on Mm1 or Mm3*.\nNOTE 6: It is not specified in the present document how location information is obtained in the case of MEC in NFV.\nNOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "OperationState": { "title": "OperationState", @@ -2893,64 +1979,73 @@ ], "type": "string", "description": "Operation state", - "examples": [ - "STARTING" - ] + "examples": ["STARTING"] }, "InstantiationState": { "title": "InstantiationState", - "enum": [ - "NOT_INSTANTIATED", - "INSTANTIATED" - ], + "enum": ["NOT_INSTANTIATED", "INSTANTIATED"], "type": "string", "description": "Instantiation state of the application instance", - "examples": [ - "NOT_INSTANTIATED" - ] + "examples": ["NOT_INSTANTIATED"] }, "InstantiatedAppState": { "title": "InstantiatedAppState", - "required": [ - "operationalState" - ], + "required": ["operationalState"], "type": "object", "properties": { "operationalState": { "$ref": "#/components/schemas/OperationalState" - } - }, - "description": "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'" - }, - "OperationalState": { - "title": "OperationalState", - "enum": [ - "STARTED", - "STOPPED" - ], + }, + "appInstLocation": { + "type": "object", + "description": "Location of the MEC application instance. See note 5 and note 6.", + "$ref": "#/components/schemas/LocationInformation" + }, + "mcioInfo": { + "type": "array", + "description": "Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7.", + "items": { + "$ref": "#/components/schemas/McioInfo" + } + } + }, + "description": "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'" + }, + "OperationalState": { + "title": "OperationalState", + "enum": ["STARTED", "STOPPED"], "type": "string", "description": "Operational state is applicable in the instantiation state INSTANTIATED", - "examples": [ - "STARTED" - ] + "examples": ["STARTED"] }, "AppInstanceInfo.links": { "title": "AppInstanceInfo.links", - "required": [ - "self" - ], + "required": ["self"], "type": "object", "properties": { "self": { + "type": "object", + "description": "Self referring URI.", "$ref": "#/components/schemas/LinkType" }, "instantiate": { + "type": "object", + "description": "Link to the \"instantiate\" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance in NOT_INSTANTIATED state). See note 3.", "$ref": "#/components/schemas/LinkType" }, "terminate": { + "type": "object", + "description": "Link to the \"terminate\" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state).", "$ref": "#/components/schemas/LinkType" }, "operate": { + "type": "object", + "description": "Link to the \"operate\" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state).", + "$ref": "#/components/schemas/LinkType" + }, + "configure_platform_for_app": { + "type": "object", + "description": "Link to the \"configure_platform_for_app\" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state). See note 4", "$ref": "#/components/schemas/LinkType" } }, @@ -2958,16 +2053,10 @@ }, "LcmOperation": { "title": "LcmOperation", - "enum": [ - "INSTATIATE", - "OPERATE", - "TERMINATE" - ], + "enum": ["INSTATIATE", "OPERATE", "TERMINATE"], "type": "string", "description": "Type of the actual LCM operation represented by this application instance LCM operation occurrence", - "examples": [ - "INSTATIATE" - ] + "examples": ["INSTATIATE"] }, "AppLcmOpOccNotification": { "title": "AppLcmOpOccNotification", @@ -2986,7 +2075,7 @@ "properties": { "id": { "type": "string", - "description": "''" + "description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value." }, "notificationType": { "type": "string", @@ -2995,14 +2084,11 @@ "operationType": { "type": "string", "description": "Type of the LCM operation represented by this application instance LCM operation occurrence.", - "enum": [ - "INSTANTIATE", - "OPERATE", - "TERMINATE" - ] + "enum": ["INSTANTIATE", "OPERATE", "TERMINATE"] }, "operationState": { "type": "string", + "description": "Operation state.", "enum": [ "STARTING", "PROCESSING", @@ -3016,6 +2102,8 @@ "description": "Identifier of the subscription related to this notification." }, "timeStamp": { + "type": "object", + "description": "Date and time of the notification generation.", "$ref": "#/components/schemas/TimeStamp" }, "appLcmOpOccId": { @@ -3027,6 +2115,7 @@ "description": "Identifier of application instance." }, "_links": { + "type": "object", "$ref": "#/components/schemas/AppLcmOpOccNotification.links" } }, @@ -3045,37 +2134,45 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value." }, "notificationType": { "type": "string", "description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierCreationSubscription\" for this notification type." }, "subscriptionId": { - "type": "string" + "type": "string", + "description": "Identifier of the subscription related to this notification." }, "timeStamp": { + "type": "object", + "description": "Date and time of the notification generation.", "$ref": "#/components/schemas/TimeStamp" }, "appInstanceId": { - "type": "string" + "type": "string", + "description": "The created application instance Identifier." }, "_links": { + "type": "object", + "description": "Links to resources related to this notification.", "$ref": "#/components/schemas/Notification._links" } } }, "Notification._links": { "type": "object", - "required": [ - "subscription", - "appInstance" - ], + "required": ["subscription", "appInstance"], "properties": { "subscription": { + "type": "object", + "description": "A link to the related subscription.", "$ref": "#/components/schemas/LinkType" }, "appInstance": { + "type": "object", + "description": "Link to the resource representing the created application instance.", "$ref": "#/components/schemas/LinkType" } } @@ -3093,42 +2190,48 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value." }, "notificationType": { "type": "string", "description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierDeletionSubscription\" for this notification type." }, "subscriptionId": { - "type": "string" + "type": "string", + "description": "Identifier of the subscription related to this notification." }, "timeStamp": { + "type": "object", + "description": "Date and time of the notification generation.", "$ref": "#/components/schemas/TimeStamp" }, "appInstanceId": { - "type": "string" + "type": "string", + "description": "The deleted application instance Identifier." }, "_links": { + "type": "object", + "description": "Links to resources related to this notification.", "$ref": "#/components/schemas/Notification._links" } } }, "AppLcmOpOccNotification.links": { "title": "AppLcmOpOccNotification.links", - "required": [ - "appInstance", - "subscription", - "appLcmOpOcc" - ], + "required": ["appInstance", "subscription", "appLcmOpOcc"], "type": "object", "properties": { "appInstance": { + "type": "object", "$ref": "#/components/schemas/LinkType" }, "subscription": { + "type": "object", "$ref": "#/components/schemas/LinkType" }, "appLcmOpOcc": { + "type": "object", "$ref": "#/components/schemas/LinkType" } }, @@ -3136,12 +2239,12 @@ }, "InstantiateAppRequest": { "title": "InstantiateAppRequest", - "required": [ - "selectedMECHostInfo" - ], + "required": ["selectedMECHostInfo"], "type": "object", "properties": { "locationConstraints": { + "type": "object", + "description": "Defines the location constraints for the application instance to be created. See note 3.", "$ref": "#/components/schemas/LocationConstraints" }, "selectedMECHostInfo": { @@ -3149,53 +2252,352 @@ "items": { "$ref": "#/components/schemas/MECHostInformation" }, - "description": "Describes the information of selected host for the application instance. See note 2." + "description": "Describes the information of selected host for the application instance. See note 2.\n" }, "vimConnectionInfo": { "type": "array", "items": { "$ref": "#/components/schemas/VimConnectionInfo" }, - "description": "Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links.\nThis attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2." + "description": "Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links. This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2." }, "virtualComputeDescriptor": { - "type": "string", - "description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize the application instance to be created. This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD." + "type": "object", + "items": { + "$ref": "#/components/schemas/VirtualComputeDescriptor" + }, + "description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM to realize the application\ninstance to be created. See note 1 and note 4.\n" + }, + "osContainerDescriptor": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OsContainerDescriptor" + }, + "description": "Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the \nsame host and same network namespace. See note 1, note 4 and note 5.\n" }, "virtualStorageDescriptor": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/VirtualStorageDescriptor" }, - "description": "Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1." + "description": "Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1.\n" }, "appTermCandsForCoord": { - "$ref": "#/components/schemas/AppTermCandsForCoord" + "type": "object", + "items": { + "$ref": "#/components/schemas/AppTermCandsForCoord" + }, + "description": "Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3." } - } + }, + "description": "NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD.\nNOTE 2: This field applies to Mm3 reference point only.\nNOTE 3: This field applies to Mm1 reference point only.\nNOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present.\nNOTE 5: This attribute reflects the ETSI NFV interpretation of the cloud native workloads.\n" }, "AppTermCandsForCoord": { "type": "object", - "required": [ - "terminationOptions" - ], + "required": ["terminationOptions"], "properties": { "terminationOptions": { "type": "array", + "description": "Sets of application options for the MEO/MEAO to select from as candidates for termination. The MEO/MEAO shall select one or more of these alternate options to pass to the OSS when utilizing the LCM coordination exchange in pre-emption situations. For each option, the MEO/MEAO may select all, or a subset, of the candidate set's members.", "items": { "$ref": "#/components/schemas/AppTermCandsForCoord.terminationOptions" } } } }, - "AppTermCandsForCoord.terminationOptions": { + "VirtualStorageDescriptor": { + "type": "object", + "required": ["id", "typeOfStorage"], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of this VirtualStorageDesc in the VNFD." + }, + "typeOfStorage": { + "type": "string", + "description": "Type of virtualised storage resource.", + "enum": ["BLOCK", "OBJECT", "FILE"] + }, + "blockStorageData": { + "type": "object", + "$ref": "#/components/schemas/BlockStorageData", + "description": "Details of block storage." + }, + "objectStorageData": { + "type": "object", + "$ref": "#/components/schemas/ObjectStorageData", + "description": "Details of object storage." + }, + "fileStorageData": { + "type": "object", + "$ref": "#/components/schemas/FileStorageData", + "description": "Details of file storage." + }, + "nfviMaintenanceInfo": { + "type": "object", + "$ref": "#/components/schemas/NfviMaintenanceInfo", + "description": "Information on the rules to be observed during NFVI operation and maintenance." + }, + "perVnfcInstance": { + "type": "boolean", + "description": "Indicates whether the virtual storage resource shall be instantiated per VNFC instance." + } + } + }, + "NfviMaintenanceInfo": { + "type": "object", + "required": ["impactNotificationLeadTime"], + "properties": { + "impactNotificationLeadTime": { + "type": "number", + "description": "The minimum notification lead time requested for upcoming impact of the virtualised resource or their group." + }, + "isImpactMitigationRequested": { + "type": "boolean", + "description": "When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact." + }, + "supportedMigrationType": { + "type": "array", + "description": "Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1.", + "items": { + "type": "string", + "enum": ["NO_MIGRATION", "OFFLINE_MIGRATION", "LIVE_MIGRATION"] + } + }, + "maxUndetectableInterruptionTime": { + "type": "number", + "description": "Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. (see note 1)" + }, + "minRecoveryTimeBetweenImpacts": { + "type": "number", + "description": "When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.)" + }, + "maxNumberOfImpactedInstances": { + "type": "object", + "$ref": "#/components/schemas/MaxNumberOfImpactedInstances", + "description": "When present, specifies for different group sizes the maximum number of instances that can be impacted simultaneously within the group of virtualised resources without losing functionality. Zero cardinality indicates no constraint (see note 2). MaxNumberOfImpactedInstances is defined in clause 7.1.8.18. See note 3." + }, + "minNumberOfPreservedInstances": { + "type": "object", + "$ref": "#/components/schemas/MinNumberOfPreservedInstances", + "description": "When present, specifies for different group sizes the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources. Zero cardinality indicates no constraint (see note 2). MinNumberOfPreservedInstances is defined in clause 7.1.8.22.See note 3." + } + }, + "description": "NOTE 1: When the maximum undetectable interruption time is specified it constrains the live migration. If it cannot be\nguaranteed on an NFVI that the interruption caused by the live migration will be less than the indicated\nmaximum undetectable interruption time, then life migration should be downgraded according to the order of preference.\nNOTE 2: Impacts to instances of the group happening within the minimum recovery time are considered simultaneous\nimpacts.\nNOTE 3: Either \"maxNumberOfImpactedInstances\" or \"minNumberOfPreservedInstances\" may be provided, but not both\n" + }, + "MaxNumberOfImpactedInstances": { + "type": "object", + "required": ["maxNumberOfImpactedInstances"], + "properties": { + "groupSize": { + "type": "integer", + "description": "Determines the size of the group for which the maxNumberOfImpactedInstances is specified." + }, + "maxNumberOfImpactedInstances": { + "type": "integer", + "description": "The maximum number of instances that can be impacted simultaneously within the group of the specified size." + } + }, + "description": "NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form an ascending ordered list of groupSizes. \nNOTE 2: The number of instances in the group for which the maxNumberOfImpactedInstances is specified may be equal to groupSize or less. When the number of instances is less than \n the groupSize, it shall be at least 1 if this is the first groupSize in the ordered list of groupSizes, or it shall be greater by at least 1 than the previous groupSize in the ordered list of groupSizes.\n" + }, + "CommunicationInterface": { + "type": "object", + "properties": { + "ipAddresses": { + "type": "array", + "description": "Entry point information of the service as one or more pairs of IP address and port.", + "items": { + "$ref": "#/components/schemas/ipAddresses" + } + } + } + }, + "ipAddresses": { + "type": "object", + "required": ["host", "port"], + "properties": { + "host": { + "type": "string", + "description": "Host portion of the address." + }, + "port": { + "type": "integer", + "description": "Port portion of the address." + } + } + }, + "MinNumberOfPreservedInstances": { + "type": "object", + "required": ["minNumberOfPreservedInstances"], + "properties": { + "groupSize": { + "type": "integer", + "description": "When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited." + }, + "minNumberOfPreservedInstances": { + "type": "integer", + "description": "The minimum number of instances which need to be preserved simultaneously within the group of the specified size." + } + }, + "description": "NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form \n an ascending ordered list of groupSizes. \nNOTE 2: The number of instances in the group for which the minNumberOfPreservedInstances is specified may be equal \n to groupSize or less.\n" + }, + "FileStorageData": { "type": "object", "required": [ - "appInstIdTerminationCands" + "sizeOfStorage", + "fileSystemProtocol", + "intVirtualLinkDesc" ], + "properties": { + "sizeOfStorage": { + "type": "number", + "description": "Size of virtualised storage resource in GB." + }, + "fileSystemProtocol": { + "type": "string", + "description": "The shared file system protocol (e.g. NFS, CIFS)." + }, + "intVirtualLinkDesc": { + "type": "object", + "$ref": "#/components/schemas/VnfVirtualLinkDesc", + "description": "Reference of the internal VLD which this file storage connects to." + } + } + }, + "VnfVirtualLinkDesc": { + "type": "object", + "required": [ + "virtualLinkDescId", + "virtualLinkDescFlavour", + "connectivityType" + ], + "properties": { + "virtualLinkDescId": { + "type": "string", + "description": "Unique identifier of this internal VLD in VNFD." + }, + "virtualLinkDescFlavour": { + "type": "array", + "description": "Describes a specific flavour of the VL with specific bitrate requirements.", + "items": { + "$ref": "#/components/schemas/VirtualLinkDescFlavour" + } + }, + "connectivityType": { + "type": "object", + "description": "See clause 7.1.7.3.", + "$ref": "#/components/schemas/ConnectivityType" + }, + "testAccess": { + "type": "array", + "description": "Specifies test access facilities expected on the VL.", + "items": { + "type": "string", + "example": "passive monitoring" + } + }, + "description": { + "type": "string", + "description": "Provides human-readable information on the purpose of the VL.", + "example": "control plane traffic" + }, + "monitoringParameter": { + "type": "array", + "description": "Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM.", + "items": { + "$ref": "#/components/schemas/MonitoringParameter" + } + }, + "nfviMaintenanceInfo": { + "type": "object", + "description": "When present, provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance (e.g. NFVI resource upgrades). NfviMaintenanceInfo is defined in clause 7.1.8.17.", + "$ref": "#/components/schemas/NfviMaintenanceInfo" + }, + "externallyManaged": { + "type": "string", + "description": "Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed.", + "enum": ["REQUIRED", "ALLOWED"], + "default": "ALLOWED" + } + } + }, + "ConnectivityType": { + "type": "object", + "required": ["layerProtocol"], + "properties": { + "layerProtocol": { + "type": "array", + "description": "Specifies the protocols that the VL uses See note 1 and note 2.\n", + "items": { + "type": "string", + "enum": [ + "Ethernet", + "MPLS", + "ODU2", + "IPV4", + "IPV6", + "Pseudo-Wire", + "Etc" + ] + }, + "minItems": 1 + }, + "flowPattern": { + "type": "string", + "description": "Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.)." + } + }, + "description": "NOTE 1 The top layer protocol of the VL protocol stack shall always be provided. The lower layer protocols may be included when there are specific requirements on these layers. \nNOTE 2 If more than 1 values are present, the first value represents the highest layer protocol data, and the last value represents the lowest layer protocol data. \n" + }, + "VirtualLinkDescFlavour": { + "type": "object", + "required": ["flavourId"], + "properties": { + "flavourId": { + "type": "string", + "description": "Identifies a flavour within a VnfVirtualLinkDesc." + }, + "qos": { + "type": "object", + "$ref": "#/components/schemas/QoS", + "description": "QoS of the VL." + } + } + }, + "QoS": { + "type": "object", + "required": ["latency", "packetDelayVariation"], + "properties": { + "latency": { + "type": "number", + "description": "Latency of the VL in milliseconds." + }, + "packetDelayVariation": { + "type": "number", + "description": "Packet delay variation of the VL in milliseconds." + }, + "packetLossRatio": { + "type": "number", + "description": "Packet loss ratio of the VL in percentage." + } + } + }, + "ObjectStorageData": { + "type": "object", + "properties": { + "maxSizeOfStorage": { + "type": "number", + "description": "Max size of virtualised storage resource in GB." + } + } + }, + "AppTermCandsForCoord.terminationOptions": { + "type": "object", + "required": ["appInstIdTerminationCands"], "properties": { "appInstIdTerminationCands": { "type": "array", + "description": "List of application instance identifiers, constituting a candidate set for termination.", "items": { "type": "string" } @@ -3204,9 +2606,7 @@ }, "LinkType": { "title": "LinkType", - "required": [ - "href" - ], + "required": ["href"], "type": "object", "properties": { "href": { @@ -3215,13 +2615,405 @@ } } }, + "OsContainerDescriptor": { + "title": "OsContainerDescriptor", + "type": "object", + "required": ["osContainerDescId", "name", "description", "swImageDesc"], + "properties": { + "osContainerDescId": { + "type": "string", + "description": "Unique identifier of this OsContainerDesc in the VNFD." + }, + "name": { + "type": "string", + "description": "Human readable name of this OS container." + }, + "description": { + "type": "string", + "description": "Human readable description of this OS container." + }, + "requestedCpuResources": { + "type": "integer", + "description": "Number of CPU resources requested for the container (e.g. in milli-CPU-s)." + }, + "requestedMemoryResources": { + "type": "number", + "description": "Amount of memory resources requested for the container (e.g. in MB)." + }, + "requestedEphemeralStorageResources": { + "type": "number", + "description": "Size of ephemeral storage resources requested for the container (e.g. in GB)." + }, + "extendedResourceRequests": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "An array of key-value pairs of extended resources required by the container see note." + }, + "cpuResourceLimit": { + "type": "integer", + "description": "Number of CPU resources the container can maximally use (e.g. in milli-CPU)." + }, + "memoryResourceLimit": { + "type": "number", + "description": "Amount of memory resources the container can maximally use (e.g. in MB)." + }, + "ephemeralStorageResourceLimit": { + "type": "number", + "description": "Size of ephemeral storage resources the container can maximally use (e.g. in GB)." + }, + "hugePageResources": { + "type": "object", + "description": "Specifies HugePages resources requested for the container, which the container can maximally use.", + "additionalProperties": { + "type": "string" + } + }, + "cpuPinningRequirements": { + "type": "object", + "$ref": "#/components/schemas/VirtualCpuPinningData", + "description": "Requirements for CPU pinning configuration for this OS container." + }, + "swImageDesc": { + "type": "object", + "$ref": "#/components/schemas/SwImageDesc", + "description": "Describes the software image realizing this OS container." + }, + "bootData": { + "type": "string", + "description": "Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent." + }, + "monitoringParameters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MonitoringParameter" + }, + "description": "Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM." + } + } + }, + "MonitoringParameter": { + "type": "object", + "required": ["monitoringParameterId", "performanceMetric"], + "properties": { + "monitoringParameterId": { + "type": "string", + "description": "Unique identifier of the monitoring parameter." + }, + "name": { + "type": "string", + "description": "Human readable name of the monitoring parameter." + }, + "performanceMetric": { + "type": "string", + "description": "Specifies the virtualised resource performance metric." + }, + "collectionPeriod": { + "type": "string", + "description": "An attribute that describes the periodicity at which to collect the performance information." + } + } + }, + "VirtualComputeDescriptor": { + "title": "VirtualComputeDescriptor", + "type": "object", + "required": ["virtualComputeDescId", "virtualMemory", "virtualCpu"], + "properties": { + "virtualComputeDescId": { + "type": "string", + "description": "Unique identifier of this VirtualComputeDesc in the VNFD." + }, + "logicalNode": { + "type": "array", + "description": "The logical node requirements.", + "items": { + "$ref": "#/components/schemas/LogicalNodeRequirements" + } + }, + "requestAdditionalCapabilities": { + "type": "array", + "description": "Specifies requirements for additional capabilities. These may be for a range of purposes. One example is acceleration related capabilities. See clause 7.1.9.5.", + "items": { + "$ref": "#/components/schemas/RequestedAdditionalCapabilityData" + } + }, + "computeRequirements": { + "description": "Specifies compute requirements.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "virtualMemory": { + "type": "object", + "description": "The virtual memory of the virtualised compute. See clause 7.1.9.3.2.", + "$ref": "#/components/schemas/VirtualMemoryData" + }, + "virtualCpu": { + "type": "object", + "description": "The virtual CPU(s) of the virtualised compute. See clause 7.1.9.2.3.", + "$ref": "#/components/schemas/VirtualCpuData" + }, + "virtualDisk": { + "type": "array", + "description": "The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3.", + "items": { + "$ref": "#/components/schemas/BlockStorageData" + } + } + } + }, + "BlockStorageData": { + "type": "object", + "required": ["sizeOfStorage"], + "properties": { + "sizeOfStorage": { + "type": "number", + "description": "Size of virtualised storage resource in GB." + }, + "vduStorageRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "An array of key-value pairs that articulate the storage deployment requirements." + }, + "rdmaEnabled": { + "type": "boolean", + "description": "Indicate if the storage support RDMA." + }, + "swImageDesc": { + "type": "object", + "$ref": "#/components/schemas/SwImageDesc", + "description": "References the software image to be loaded on the VirtualStorage resource created\nbased on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note.\n" + } + } + }, + "SwImageDesc": { + "type": "object", + "required": ["id", "name", "version", "containerFormat", "swImage"], + "properties": { + "id": { + "type": "string", + "description": "The identifier of this software image." + }, + "name": { + "type": "string", + "description": "The name of this software image." + }, + "version": { + "type": "string", + "description": "The version of this software image." + }, + "checksum": { + "$ref": "#/components/schemas/ChecksumData", + "description": "The checksum of the software image file. See note 3." + }, + "containerFormat": { + "type": "string", + "description": "The container format describes the container file format in which software image is provided." + }, + "diskFormat": { + "type": "string", + "description": "The disk format of a software image is the format of the underlying disk image. See note 1." + }, + "minDisk": { + "type": "number", + "description": "The minimal disk size requirement for this software image. The value of the \"size of storage\" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1." + }, + "minRam": { + "type": "number", + "description": "The minimal RAM requirement for this software image. The value of the \"size\" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2." + }, + "size": { + "type": "number", + "description": "The size of this software image file. See note 3." + }, + "swImage": { + "type": "object", + "$ref": "#/components/schemas/SwImageDesc", + "description": "This is a reference to the actual software image. The reference can be relative to the root of the VNF Package or can be a URL." + }, + "operatingSystem": { + "type": "string", + "description": "Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used." + }, + "supportedVirtualisationEnvironment": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image." + } + }, + "description": "NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise.\nNOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise.\nNOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. \n" + }, + "ChecksumData": { + "type": "object", + "required": ["algorithm", "hash"], + "properties": { + "algorithm": { + "type": "string", + "description": "Specifies the algorithm used to obtain the checksum value. See note." + }, + "hash": { + "type": "string", + "description": "Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers.\n" + } + }, + "description": "NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2].\n" + }, + "LogicalNodeRequirements": { + "type": "object", + "required": ["id", "logicalNodeRequirementDetail"], + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Identifies this set of logical node requirements" + }, + "logicalNodeRequirementDetail": { + "description": "The logical node-level compute, memory and I/O requirements. An array of key-value pairs that articulate the deployment requirements. This could include the number of CPU cores on this logical node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel via the libnuma library) or a requirement related to the association of an I/O device with the logical node.\n", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + } + } + }, + "RequestedAdditionalCapabilityData": { + "type": "object", + "required": [ + "requestedAdditionalCapabilityName", + "supportMandatory", + "targetPerformanceParameters" + ], + "properties": { + "requestedAdditionalCapabilityName": { + "type": "string", + "description": "Specifies a requested additional capability for the VDU" + }, + "supportMandatory": { + "type": "boolean", + "description": "Indicates whether the requested additional capability is mandatory for successful operation" + }, + "minRequestedAdditionalCapabilityVersion": { + "type": "string", + "description": "Specifies the minimum version of the requested additional capability" + }, + "preferredRequestedAdditionalCapabilityVersion": { + "type": "string", + "description": "Specifies the preferred version of the requested additional capability" + }, + "targetPerformanceParameters": { + "type": "array", + "description": "Specifies specific attributes, dependent on the requested additional capability type.", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + } + } + } + }, + "KeyValuePairs": { + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "VirtualMemoryData": { + "type": "object", + "required": ["virtualMemSize"], + "properties": { + "virtualMemSize": { + "type": "number", + "description": "Amount of virtual memory in MB." + }, + "virtualMemOversubscriptionPolicy": { + "type": "string", + "description": "The memory core oversubscription policy in terms of virtual memory to physical memory\non the platform. The cardinality can be 0 during the allocation request, if no particular\nvalue is requested.\n" + }, + "vduMemRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "Array of key-value pair requirements on the memory for the VDU." + }, + "numaEnabled": { + "type": "boolean", + "description": "Specifies the memory allocation to be cognisant of the relevant process/core allocation." + }, + "hugePagesRequirements": { + "type": "string", + "description": "Specifies requirements on the huge pages resources for the virtual memory." + } + } + }, + "VirtualCpuData": { + "type": "object", + "required": ["numVirtualCpu"], + "properties": { + "cpuArchitecture": { + "type": "string", + "description": "CPU architecture type. Examples are x86, ARM." + }, + "numVirtualCpu": { + "type": "integer", + "description": "Number of virtual CPUs." + }, + "virtualCpuClock": { + "type": "number", + "description": "Minimum virtual CPU clock rate (e.g. in MHz)." + }, + "virtualCpuOversubscriptionPolicy": { + "type": "string", + "description": "The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads." + }, + "vduCpuRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." + }, + "virtualCpuPinning": { + "$ref": "#/components/schemas/VirtualCpuPinningData" + } + } + }, + "VirtualCpuPinningData": { + "type": "object", + "properties": { + "virtualCpuPinningPolicy": { + "type": "string", + "description": "Indicates the policy for CPU pinning.", + "enum": ["STATIC", "DYNAMIC"] + }, + "virtualCpuPinningRule": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of \"STATIC\" virtualCpuPinningPolicy." + } + } + }, "LocationConstraints": { "title": "LocationConstraints", "type": "object", "properties": { "countryCode": { "type": "string", - "description": "The two-letter ISO 3166 country code in capital letters." + "description": "The two-letter ISO 3166 country code in capital letters. See note." }, "civicAddressElement": { "type": "array", @@ -3230,24 +3022,21 @@ } }, "area": { - "type": "object", - "description": "Geographic area. Shall be absent if the \"civicAddressElement\" attribute is present. The content of this attribute shall follow the provisions for the \"Polygon\" geometry object as defined in IETF RFC 7946 [8], for which" + "type": "string", + "description": "Geographic area. Shall be absent if the \"civicAddressElement\" attribute is present. The content of this attribute shall follow the provisions for the \"Polygon\" geometry object as defined in IETF RFC 7946 [8], for which the \"type\" member shall be set to the value \"Polygon\". See note." } }, - "description": "'The LocationConstraints data type supports the specification of MEC application requirements related to MEC application deployment location constraints. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776'" + "description": "\"'The LocationConstraints data type supports the specification of MEC application requirements related to MEC application deployment location constraints. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776'\"\nNOTE: If both \"countryCode\" and \"area\" are present, no conflicts should exist between the values of these two \nattributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic \narea signalled by \"area\" that are outside the boundaries of the country signalled by \"countryCode\". If \n\"countryCode\" is absent, it is solely the \"area\" attribute that defines the location constraint.\n" }, "CivicAddressElement": { "title": "CivicAddressElement", - "required": [ - "caType", - "caValue" - ], + "required": ["caType", "caValue"], "type": "object", "properties": { "caType": { "type": "integer", "description": "'Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776.'", - "contentEncoding": "int32" + "format": "int32" }, "caValue": { "type": "string", @@ -3258,26 +3047,23 @@ }, "MECHostInformation": { "title": "MECHostInformation", - "required": [ - "hostId" - ], + "required": ["hostId"], "type": "object", "properties": { "hostId": { - "type": "object", - "description": "Deployment-specific information to identify a MEC host. This information can be structured to cater for host identification schemes that are more complex than a simple identifier, e.g. when referring to the structure of an NFVI." + "$ref": "#/components/schemas/KeyValuePairs", + "description": "Deployment-specific information to identify a MEC host. See note." }, "hostName": { "type": "string", "description": "Human-readable name of MEC host." } - } + }, + "description": "NOTE: This information can be structured to cater for host identification schemes that are more \ncomplex than a simple identifier, e.g. when referring to the structure of an NFVI.\n" }, "OperateAppRequest": { "title": "OperateAppRequest", - "required": [ - "changeStateTo" - ], + "required": ["changeStateTo"], "type": "object", "properties": { "changeStateTo": { @@ -3286,36 +3072,27 @@ "gracefulStopTimeout": { "type": "integer", "description": "The time interval (in seconds) to wait for the application instance to be taken out of service during graceful stop, before stopping the application. See note 1 and note 2.", - "contentEncoding": "int32" + "format": "int32" }, "stopType": { + "description": "The stop type. See notes 1 and 3.", "$ref": "#/components/schemas/StopType" } - } + }, + "description": "NOTE 1: The \"stopType\" and \"gracefulStopTimeout\" attributes shall be absent, when the \"changeStateTo\" attribute is \nequal to \"STARTED\".\nNOTE 2: The \"gracefulStopTimeout\" attribute shall be present, when the \"changeStateTo\" is equal to \"STOPPED\" and \nthe \"stopType\" attribute is equal to \"GRACEFUL\". The \"gracefulStopTimeout\" attribute shall be absent, when \nthe \"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is equal to \"FORCEFUL\".\nNOTE 3: The request shall be treated as if the \"stopType\" attribute was set to \"FORCEFUL\", when the \n\"changeStateTo\" attribute is equal to \"STOPPED\" and the \"stopType\" attribute is absent\n" }, "StopType": { "title": "StopType", - "enum": [ - "FORCEFUL", - "GRACEFUL" - ], + "enum": ["FORCEFUL", "GRACEFUL"], "type": "string", - "description": "Signals forceful or graceful stop", - "examples": [ - "FORCEFUL" - ] + "examples": ["FORCEFUL"] }, "ChangeStateTo": { "title": "ChangeStateTo", - "enum": [ - "STARTED", - "STOPPED" - ], + "enum": ["STARTED", "STOPPED"], "type": "string", "description": "The desired operational state", - "examples": [ - "STARTED" - ] + "examples": ["STARTED"] }, "ProblemDetails": { "title": "ProblemDetails", @@ -3332,7 +3109,7 @@ "status": { "type": "integer", "description": "The HTTP status code for this occurrence of the problem", - "contentEncoding": "int32" + "format": "int32" }, "title": { "type": "string", @@ -3346,76 +3123,64 @@ }, "TerminateAppRequest": { "title": "TerminateAppRequest", - "required": [ - "terminationType" - ], + "required": ["terminationType"], "type": "object", "properties": { "gracefulTerminationTimeout": { "type": "integer", - "description": "This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting down the application and releasing the resources. \nThe unit is seconds.\nIf not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources.", - "contentEncoding": "int32" + "description": "This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting down the application and releasing the resources. \nThe unit is seconds.\nIf not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources.", + "format": "int32" }, "terminationType": { "$ref": "#/components/schemas/TerminationType" } - } + }, + "description": "NOTE: If the application instance is still in service, requesting forceful termination can adversely impact service.\n" }, "TimeStamp": { "title": "TimeStamp", - "required": [ - "nanoSeconds", - "seconds" - ], + "required": ["nanoSeconds", "seconds"], "type": "object", "properties": { "nanoSeconds": { "type": "integer", "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", - "contentEncoding": "int32" + "format": "int32" }, "seconds": { "type": "integer", - "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", - "contentEncoding": "int32" + "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32" } } }, "TerminationType": { "title": "TerminationType", - "enum": [ - "FORCEFUL", - "GRACEFUL" - ], + "enum": ["FORCEFUL", "GRACEFUL"], "type": "string", "description": "'Indicates whether forceful or graceful termination is requested.'", - "examples": [ - "FORCEFUL" - ] + "examples": ["FORCEFUL"] }, "VimConnectionInfo": { "title": "VimConnectionInfo", - "required": [ - "id", - "vimType" - ], + "required": ["id", "vimType"], "type": "object", "properties": { "accessInfo": { - "type": "object", - "description": "'This data 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 8259'" + "$ref": "#/components/schemas/KeyValuePairs", + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is\nnot significant. In JSON, a set of key-value pairs is represented as an object. It shall comply\nwith the provisions defined in clause 4 of IETF RFC 8259.\n" }, "extra": { - "type": "object", - "description": "'This data 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 8259'" + "$ref": "#/components/schemas/KeyValuePairs", + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply\nwith the provisions defined in clause 4 of IETF RFC 8259.\n" }, "id": { "type": "string", "description": "The identifier of the VIM Connection. This identifier is managed by the MEO." }, "interfaceInfo": { - "type": "object", - "description": "'This data 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 8259'" + "$ref": "#/components/schemas/KeyValuePairs", + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is\nnot significant. In JSON, a set of key-value pairs is represented as an object. It shall\ncomply with the provisions defined in clause 4 of IETF RFC 8259.\n" }, "vimId": { "type": "string", @@ -3423,15 +3188,13 @@ }, "vimType": { "type": "string", - "description": "Discriminator for the different types of the VIM information.The value of this attribute determines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available." + "description": "Discriminator for the different types of the VIM information.The value of this attribute\ndetermines the structure of the \"interfaceInfo\" and \"accessInfo\" attributes, based on the type\nof the VIM.The set of permitted values is expected to change over time as new types or versions\nof VIMs become available.\n" } } }, "Links": { "title": "Links", - "required": [ - "subscription" - ], + "required": ["subscription"], "type": "object", "properties": { "subscription": { @@ -3440,9 +3203,69 @@ }, "description": "Links to resources related to this notification." } + }, + "responses": { + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests: used when a rate limiter has triggered.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } } }, - "security": [ - {} - ] + "security": [{}] } \ No newline at end of file diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 91a36d523b1f4397feaaa6910dcd233c2d8375cf..0c2a0a2299a226fd3affbbc1132a11919d3d1e5f 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -9,11 +9,11 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '2.2.1' + version: '3.1.1' externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' + description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.1.1' + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema tags: - name: app-lcm @@ -33,7 +33,7 @@ paths: operationId: appInstancePOST parameters: [] requestBody: - description: '' + description: The POST method is used to create an application instance resource. content: application/json: schema: @@ -48,47 +48,17 @@ paths: schema: $ref: '#/components/schemas/AppInstanceInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false get: tags: @@ -143,49 +113,18 @@ paths: items: $ref: '#/components/schemas/AppInstanceInfo' description: '' - contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_instances/{appInstanceId}: @@ -212,47 +151,17 @@ paths: schema: $ref: '#/components/schemas/AppInstanceInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -274,54 +183,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /subscriptions: @@ -337,11 +209,10 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionRequest' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' - contentMediaType: application/json + - $ref: '#/components/schemas/AppInstSubscriptionRequest' + - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' required: true responses: '201': @@ -351,53 +222,22 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionInfo' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' - contentMediaType: application/json + - $ref: '#/components/schemas/AppInstSubscriptionInfo' + - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' callbacks: notification: '{$request.body#/callbackUri}': @@ -412,8 +252,8 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstNotification' - - $ref: '#/components/schemas/AppLcmOpOccNotification' + - $ref: '#/components/schemas/AppInstNotification' + - $ref: '#/components/schemas/AppLcmOpOccNotification' responses: '204': description: "No content" @@ -443,47 +283,17 @@ paths: schema: $ref: '#/components/schemas/AppInstanceSubscriptionLinkList' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /subscriptions/{subscriptionId}: @@ -509,53 +319,22 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstSubscriptionInfo' - - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' - - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' - contentMediaType: application/json + - $ref: '#/components/schemas/AppInstSubscriptionInfo' + - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -576,34 +355,18 @@ paths: description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /user_defined_notification: @@ -620,52 +383,28 @@ paths: application/json: schema: oneOf: - - $ref: '#/components/schemas/AppInstNotification' - - $ref: '#/components/schemas/AppLcmOpOccNotification' - - $ref: '#/components/schemas/AppInstanceIdentifierCreationNotification' - - $ref: '#/components/schemas/AppInstanceIdentifierDeletionNotification' - contentMediaType: application/json + - $ref: '#/components/schemas/AppInstNotification' + - $ref: '#/components/schemas/AppLcmOpOccNotification' + - $ref: '#/components/schemas/AppInstanceIdentifierCreationNotification' + - $ref: '#/components/schemas/AppInstanceIdentifierDeletionNotification' required: true responses: '204': description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_instances/{appInstanceId}/instantiate: @@ -696,54 +435,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -777,54 +479,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_instances/{appInstanceId}/operate: @@ -855,54 +520,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs: @@ -959,49 +587,18 @@ paths: items: $ref: '#/components/schemas/AppLcmOpOcc' description: '' - contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}: @@ -1028,47 +625,17 @@ paths: schema: $ref: '#/components/schemas/AppLcmOpOcc' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}/cancel: @@ -1099,54 +666,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}/fail: @@ -1173,54 +703,17 @@ paths: schema: $ref: '#/components/schemas/AppLcmOpOcc' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_lcm_op_occs/{appLcmOpOccId}/retry: @@ -1244,54 +737,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -1313,7 +769,7 @@ paths: schema: type: string requestBody: - description: The payload body in the request contains the information necessary to provide configuration information in AppD + description: The message content in the request contains the information necessary to provide configuration information in AppD content: application/json: schema: @@ -1324,54 +780,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -1380,42 +799,60 @@ components: AppLcmOpOcc: title: AppLcmOpOcc required: - - id - - operationState - - stateEnteredTime - - startTime - - lcmOperation - - _links + - id + - operationState + - stateEnteredTime + - startTime + - lcmOperation + - _links type: object properties: id: type: string description: "'Identifier of the subscription to application LCM operation occurrence notification'" operationState: + type: object + description: Operation state $ref: '#/components/schemas/OperationState' stateEnteredTime: + type: object + description: Date and time when the current state was entered. $ref: '#/components/schemas/TimeStamp' startTime: + type: object + description: Date and time of the start of the operation. $ref: '#/components/schemas/TimeStamp' lcmOperation: + type: object + description: Date and time of the start of the operation. $ref: '#/components/schemas/LcmOperation' operationParams: + type: object + description: Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation. See note 2. $ref: '#/components/schemas/OperationParams' isCancelPending: type: boolean description: If the application LCM operation occurrence operationState is in "PROCESSING" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false. cancelMode: + type: object + description: The mode of a cancellation. $ref: '#/components/schemas/CancelMode' - _links: + type: object + description: Links to resources related to this resource. $ref: '#/components/schemas/AppInstanceLcmOpOcc.links' - description: "'This data type represents an application lifecycle management operation occurrence'" - + description: | + This data type represents an application lifecycle management operation occurrence + NOTE 1: Void. + NOTE 2: This object contains structured data, and shall comply with the provisions of clause 4 of IETF RFC 8259 + AppInstanceSubscriptionLinkList: required: - _links properties: _links: + type: object + description: List of hyperlinks related to the resource. $ref: '#/components/schemas/AppInstanceSubscriptionLinkList._links' AppInstanceSubscriptionLinkList._links: @@ -1428,6 +865,7 @@ components: description: URI referring to a resource subscriptions: type: array + description: A link list to the subscriptions. items: $ref: '#/components/schemas/AppInstanceSubscriptionLinkList._links.subscriptions' @@ -1440,10 +878,12 @@ components: href: type: string format: uri + description: The URI referring to the subscription. subscriptionType: + type: object + description: Type of the subscription. $ref: '#/components/schemas/AppInstanceSubscriptionType' - - + AppInstanceSubscriptionType: type: string description: String representing the type of a subscription. @@ -1455,9 +895,9 @@ components: OperationParams: oneOf: - - $ref: '#/components/schemas/InstantiateAppRequest' - - $ref: '#/components/schemas/OperateAppRequest' - - $ref: '#/components/schemas/TerminateAppRequest' + - $ref: '#/components/schemas/InstantiateAppRequest' + - $ref: '#/components/schemas/OperateAppRequest' + - $ref: '#/components/schemas/TerminateAppRequest' CancelMode: description: Indicates the intervention action to be taken. GRACEFUL Indicates ongoing resource management operations in the underlying system are allowed to complete execution or time out. FORCED Indicates ongoing resource management operations in the underlying system are to be cancelled without allowing them to complete execution or time out. @@ -1466,10 +906,6 @@ components: - GRACEFUL - FORCED - - - - AppInstIdCreationSubscriptionRequest: type: object required: @@ -1478,13 +914,17 @@ components: properties: subscriptionType: type: string + description: Shall be set to "AppIdentifierCreationSubscription". callbackUri: type: string + description: The URI of the endpoint for the subscription related notification to be sent to. format: uri appInstanceSubscriptionFilter: + type: object + description: Criteria used to filter application instances for which to send notifications related to this subscription. See note. $ref: '#/components/schemas/AppInstanceSubscriptionFilter' - - + description: | + NOTE: If present, the value of attribute "appInstSelectorType" in appInstanceSubscriptionFilter can only be set as "APP_D_ID" or "APP_FROM_PROVIDER". AppInstIdDeletionSubscriptionRequest: type: object @@ -1498,7 +938,10 @@ components: callbackUri: type: string format: uri + description: The URI of the endpoint for the subscription related notification to be sent to. appInstanceSubscriptionFilter: + type: object + description: Criteria used to filter application instances for which to send notifications related to this subscription. $ref: '#/components/schemas/AppInstanceSubscriptionFilter' AppInstIdCreationSubscriptionInfo: @@ -1511,23 +954,29 @@ components: properties: id: type: string + description: Identifier of the subscription to application instance operational state change notification. subscriptionType: type: string + description: Shall be set to "AppIdentifierCreationSubscription". callbackUri: type: string format: uri + description: The URI of the endpoint for the subscription related notification to be sent to. appInstanceSubscriptionFilter: + type: object + description: Criteria used to select application instances on which to send notifications related to this subscription. $ref: '#/components/schemas/AppInstanceSubscriptionFilter' _links: type: object + description: Links to resources related to this resource. required: - self properties: self: + type: object + description: URI of this resource. $ref: '#/components/schemas/LinkType' - - AppInstIdDeletionSubscriptionInfo: type: object required: @@ -1538,43 +987,51 @@ components: properties: id: type: string + description: Identifier of the subscription to application instance operational state change notification. subscriptionType: type: string description: Shall be set to "AppIdentifierDeletionSubscription". callbackUri: type: string format: uri + description: The URI of the endpoint for the subscription related notification to be sent to. appInstanceSubscriptionFilter: $ref: '#/components/schemas/AppInstanceSubscriptionFilter' _links: type: object + description: Links to resources related to this resource. required: - self properties: self: + type: object + description: URI of this resource. $ref: '#/components/schemas/LinkType' AppInstanceLcmOpOcc.links: title: AppInstanceLcmOpOcc.links required: - - self - - appInstance + - self + - appInstance type: object properties: self: + type: object + description: URI of this resource. $ref: '#/components/schemas/LinkType' appInstance: + type: object + description: Link to the application instance that the operation applies to. $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. - AppLcmOpOccSubscriptionInfo: title: AppLcmOpOccSubscriptionInfo required: - - id - - subscriptionType - - callbackUri - - _links + - id + - subscriptionType + - callbackUri + - _links type: object properties: id: @@ -1589,29 +1046,34 @@ components: callbackUri: type: string description: The URI of the endpoint for the notification to be sent to. - appLcmOpOccSubscriptionFilter: + appLcmOpOccSubscriptionFilter: + type: object $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter' description: Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription. _links: + type: object $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo.links' description: "'This data type represents a subscription to notifications of application life cycle management operation occurrence'" AppLcmOpOccSubscriptionInfo.links: title: AppLcmOpOccSubscriptionInfo.links required: - - self + - self type: object properties: self: + type: object + description: URI of this resource. $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppInstSubscriptionInfo: title: AppInstSubscriptionInfo required: - - id - - subscriptionType - - callbackUri - - _links + - id + - subscriptionType + - callbackUri + - _links type: object properties: id: @@ -1625,38 +1087,49 @@ components: - AppInstanceStateChangeSubscription appInstanceState: type: string + description: Application instance state subscribed to. enum: - NOT_INSTANTIATED - STARTED - STOPPED appInstanceSubscriptionFilter: - $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + type: object + description: Criteria used to select application instances on which to send notifications related to this subscription. + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' callbackUri: type: string description: The URI of the endpoint for the subscription related notification to be sent to. _links: + type: object $ref: '#/components/schemas/AppInstSubscriptionInfo.links' description: "'The data type represents a subscription to notification of application instance operational state change.'" + AppInstSubscriptionInfo.links: title: AppInstSubscriptionInfo.links required: - - self + - self type: object properties: self: + type: object + description: URI of this resource. $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppLcmOpOccSubscriptionRequest: title: AppLcmOpOccSubscriptionRequest required: - - callbackUri - - subscriptionType + - callbackUri + - subscriptionType type: object properties: appLcmOpOccSubscriptionFilter: + type: object + description: Subscription filter criteria to match specific application LCM operation occurrences. $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter' callbackUri: type: string + description: The URI of the endpoint for the subscription related notification to be sent to. subscriptionType: type: string description: Shall be set to "AppLcmOpOccStateChangeSubscription". @@ -1666,14 +1139,24 @@ components: type: object properties: appInstanceSubscriptionFilter: + type: object + description: If present, this attribute contains filter criteria that selects one or more application instances on which to receive "LCM operation occurrence" notifications. $ref: '#/components/schemas/AppInstanceSubscriptionFilter' notificationTypes: + type: string description: Match particular notification types. Permitted values AppLcmOpOccNotification. $ref: '#/components/schemas/NotificationTypes' operationStates: - $ref: '#/components/schemas/OperationStates' + type: array + description: Type of the LCM operation state represented by this application instance LCM operation occurrence. + items: + $ref: '#/components/schemas/OperationState' operationTypes: - $ref: '#/components/schemas/OperationTypes' + type: array + description: Type of the LCM operation represented by this application instance LCM operation occurrence. + items: + $ref: '#/components/schemas/OperationTypes' + NotificationTypes: title: NotificationTypes const: AppLcmOperationOccurrenceNotification @@ -1681,28 +1164,17 @@ components: description: Match particular notification types. examples: - AppLcmOperationOccurrenceNotification - OperationStates: - title: OperationStates - enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - - FAILED_TEMP - type: string - description: "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'" - examples: - - STARTING + OperationTypes: title: OperationTypes enum: - - INSTANTIATE - - OPERATE - - TERMINATE + - INSTANTIATE + - OPERATE + - TERMINATE type: string description: "'Type of the LCM operation represented by this application instance LCM operation occurrence.'" examples: - - INSTANTIATE + - INSTANTIATE MepInformation: type: object @@ -1715,10 +1187,11 @@ components: mepName: type: string description: Human-readable name of MEC platform + CreateAppInstanceRequest: title: CreateAppInstanceRequest required: - - appDId + - appDId type: object properties: appDId: @@ -1731,13 +1204,17 @@ components: type: string description: Human-readable name of the application instance to be created. appPlacementInfo: - description: Describes the information of selected MEC platform for the application instance to associate + type: object + description: Describes the information of selected MEC platform for the application instance to associate. See note. $ref: '#/components/schemas/MepInformation' + description: | + NOTE: This field applies to Mm3* reference point only. + AppInstSubscriptionRequest: title: AppInstSubscriptionRequest required: - - subscriptionType - - callbackUri + - subscriptionType + - callbackUri type: object properties: subscriptionType: @@ -1750,56 +1227,72 @@ components: type: string description: The URI of the endpoint for the notification to be sent to. appInstanceState: + type: object $ref: '#/components/schemas/AppInstanceState' appInstanceSubscriptionFilter: + type: object + description: Criteria used to filter application instances for which to send notifications related to this subscription. $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + AppInstanceSubscriptionFilter: title: AppInstanceSubscriptionFilter required: - - appInstSelectorType + - appInstSelectorType type: object properties: appInstSelectorType: + type: object $ref: '#/components/schemas/AppInstSelectorType' appInstances: type: array items: type: string - description: '' + description: | + If appInstIdSelector = APP_IDENTITY match existing application instances with an "application instance identifier" listed in this attribute. + If appInstIdSelector = APP_NAME match existing application instances with an "application instance name" listed in this attribute. + If appInstIdSelector = APP_D_ID match existing application instances, or those created in the future whilst the subscription is active, based on the application descriptors identified by one of the "application descriptor identities" listed in this attribute. + If appInstIdSelector = APP_FROM_PROVIDER this attribute shall not be included. appsFromProviders: type: array items: $ref: '#/components/schemas/AppsFromProviders' - description: '' description: "'This data type represents subscription filter criteria to match application instances. '" + AppsFromProviders: title: AppsFromProviders required: - - appProvider + - appProvider type: object properties: appProvider: type: string description: Provider of the application and of the AppD. appProducts: - $ref: '#/components/schemas/AppProducts' + type: array + description: If present, match application instances that belong to application products with certain product names, from one particular provider. + items: + $ref: '#/components/schemas/AppProducts' description: "'Present only if appInstIdSelector = APP_FROM_PROVIDER. Match existing application instances, or those created in the future whilst the subscription is active, that belong to applications from certain providers.'" + AppProducts: title: AppProducts required: - - appName + - appName type: object properties: appName: type: string description: Name to identify the MEC application. versions: - $ref: '#/components/schemas/AppProducts.Versions' + type: array + items: + $ref: '#/components/schemas/AppProducts.Versions' description: "'If present, match application instances that belong to application products with certain product names, from one particular provider.'" + AppProducts.Versions: title: AppProducts.Versions required: - - appSoftVersion + - appSoftVersion type: object properties: appSoftVersion: @@ -1811,42 +1304,47 @@ components: type: string description: '' description: "'If present, match application instances that belong to application products with certain versions and a certain product name, from one particular provider.'" + AppInstSelectorType: title: AppInstSelectorType enum: - - VOID - - APP_IDENTITY - - APP_NAME - - APP_D_ID - - APP_FROM_PROVIDER + - VOID + - APP_IDENTITY + - APP_NAME + - APP_D_ID + - APP_FROM_PROVIDER type: string description: 0 = void examples: - - VOID + - VOID + AppInstanceState: title: AppInstanceState enum: - - NOT_INSTANTIATED - - STARTED - - STOPPED + - NOT_INSTANTIATED + - STARTED + - STOPPED type: string description: Only send notifications for application instances that are in one of the states listed in this attribute. If this attribute is absent, match all states. examples: - - NOT_INSTANTIATED + - NOT_INSTANTIATED + AppInstNotification: title: AppInstNotification required: - - _links - - appDId - - appInstanceId - - appPkgId - - id - - notificationType - - subscriptionId - - timeStamp + - _links + - appDId + - appInstanceId + - appInstanceState + - appPkgId + - id + - notificationType + - subscriptionId + - timeStamp type: object properties: _links: + type: object $ref: '#/components/schemas/Links' appDId: type: string @@ -1867,11 +1365,16 @@ components: type: string description: Identifier of the subscription related to this notification. timeStamp: + type: object + description: Date and time of the notification generation. $ref: '#/components/schemas/TimeStamp' appInstLocation: + type: string + description: Location of the MEC application instance. Shall be present if the application instance is instantiated and shall be absent otherwise. $ref: '#/components/schemas/LocationInformation' appInstanceState: type: string + description: Application instance state enum: - NOT_INSTANTIATED - STARTED @@ -1880,37 +1383,88 @@ components: LocationInformation: type: object required: - - countryCode + - countryCode properties: countryCode: type: string + description: The two-letter ISO 3166 country code in capital letters where an instance is deployed. civicAddress: - $ref: '#/components/schemas/LocationInformation.civicAddress' + type: object + description: Provides the civic address of the site hosting the MEC application instance. + $ref: '#/components/schemas/LocationInformation.civicAddress' geographicalPosition: type: string + description: Geographical position (i.e. latitude and longitude) where an instance is deployed. The content of this attribute shall follow the provisions for the "Point" geometry object as defined in IETF RFC 7946 + description: | + NOTE: At least one of civicAddress or geographicalPosition shall be present. If both are present they shall specify the same location, bound by the precision of the provided coordinates. + + McioInfo: + type: object + required: + - mcioId + - mcioName + - mcioNamespace + - vduId + - cismId + - mcioType + - desiredInstances + - availableInstances + properties: + mcioId: + type: string + description: Identifier of this MCIO, created by the CISM. + mcioName: + type: string + description: Human readable name of this MCIO. + mcioNamespace: + type: string + description: Namespace of this MCIO + vduId: + type: string + description: Reference to the applicable Vdu information element in the VNFD. + cismId: + type: string + description: Identifier of the CISM managing this MCIO. + mcioType: + type: string + description: The type of MCIO. See note 1. + desiredInstances: + type: integer + description: Number of desired MCIO instances. + availableInstances: + type: integer + description: Number of available MCIO instances + additionalInfo: + type: string + description: Additional information which is specific to the MCIO, its type, and which is available from the CISM. See note 2 + description: | + NOTE 1: The type of MCIO as specified in the declarative descriptor of the MCIO, and that can be read from the CISM. + EXAMPLE: In case of MCIOs managed by Kubernetes®, the type of MCIO corresponds to the "kind" property of the declarative descriptor. + NOTE 2: If the attribute additionalInfo is present, it may contain runtime information on the actual and desired state of the MCIO(s) LocationInformation.civicAddress: type: object required: - - civicAddressElement + - civicAddressElement properties: civicAddressElement: type: array + description: Provides elements comprising a single civic address as described in section 3.4, with accompanying example in section 5 of IETF RFC 4776. items: $ref: '#/components/schemas/CivicAddressElement' AppInstanceInfo: title: AppInstanceInfo required: - - id - - appDId - - appProvider - - appName - - appSoftVersion - - appDVersion - - appPkgId - - instantiationState - - _links + - id + - appDId + - appProvider + - appName + - appSoftVersion + - appDVersion + - appPkgId + - instantiationState + - _links type: object properties: id: @@ -1928,6 +1482,19 @@ components: appProvider: type: string description: Provider of the application and of the AppD. + nsInstanceId: + type: string + description: | + Identifier of the NS instance created by NFVO in which the MEC application has been instantiated as a VNF instance. See note 2 + vnfInstanceId: + type: string + description: | + Identifier of the VNF instance created by VNFM that the MEC application has been instantiated as. See note 2. + communicationInterface: + type: string + description: Interface for communication with other application instances. See clause 7.5.2 of ETSI GS MEC 021 [13] for the data type definition. + items: + $ref: '#/components/schemas/CommunicationInterface' appName: type: string description: Name to identify the MEC application. @@ -1944,95 +1511,133 @@ components: type: array items: $ref: '#/components/schemas/VimConnectionInfo' - description: '' + description: Information about VIM connections to be used for managing the resources for the application instance. + The keys of the map, each of which identifies information about a particular VIM connection, are managed by the MEO and referenced from other data + structures via the "vimConnectionId" attribute. See notes 1 and 3. instantiationState: $ref: '#/components/schemas/InstantiationState' instantiatedAppState: $ref: '#/components/schemas/InstantiatedAppState' _links: $ref: '#/components/schemas/AppInstanceInfo.links' - description: "'The data type of AppInstanceInfo represents the parameters of instantiated application instance resources.'" + description: | + The data type of AppInstanceInfo represents the parameters of instantiated application instance resources. + NOTE 1: This field does not apply if the data structure is used by MEAO. + NOTE 2: This field applies if the data structure is used by MEAO. + NOTE 3: This field does not apply if the data structure is used on Mm3*. + NOTE 4: This field applies if the data structure is used on Mm3*. + NOTE 5: This field applies if the data structure is used on Mm1 or Mm3*. + NOTE 6: It is not specified in the present document how location information is obtained in the case of MEC in NFV. + NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + OperationState: title: OperationState enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - - FAILED_TEMP + - STARTING + - PROCESSING + - COMPLETED + - FAILED + - FAILED_TEMP type: string description: Operation state examples: - - STARTING + - STARTING + InstantiationState: title: InstantiationState enum: - - NOT_INSTANTIATED - - INSTANTIATED + - NOT_INSTANTIATED + - INSTANTIATED type: string description: Instantiation state of the application instance examples: - - NOT_INSTANTIATED + - NOT_INSTANTIATED + InstantiatedAppState: title: InstantiatedAppState required: - - operationalState + - operationalState type: object properties: operationalState: $ref: '#/components/schemas/OperationalState' + appInstLocation: + type: object + description: Location of the MEC application instance. See note 5 and note 6. + $ref: '#/components/schemas/LocationInformation' + mcioInfo: + type: array + description: Information on the MCIO(s) representing application instance realized by one or a set of OS containers. See note 7. + items: + $ref: '#/components/schemas/McioInfo' description: "'Information specific to an instantiated application. This attribute shall be present if the instantiationState attribute value is INSTANTIATED.'" + OperationalState: title: OperationalState enum: - - STARTED - - STOPPED + - STARTED + - STOPPED type: string description: Operational state is applicable in the instantiation state INSTANTIATED examples: - - STARTED + - STARTED + AppInstanceInfo.links: title: AppInstanceInfo.links required: - - self + - self type: object properties: self: + type: object + description: Self referring URI. $ref: '#/components/schemas/LinkType' instantiate: + type: object + description: Link to the "instantiate" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance in NOT_INSTANTIATED state). See note 3. $ref: '#/components/schemas/LinkType' terminate: + type: object + description: Link to the "terminate" task resource, if the related operation is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state). $ref: '#/components/schemas/LinkType' operate: + type: object + description: Link to the "operate" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state). + $ref: '#/components/schemas/LinkType' + configure_platform_for_app: + type: object + description: Link to the "configure_platform_for_app" task resource, if the related operation is supported for this application instance, and is possible based on the current status of this application instance resource (i.e. application instance is in INSTANTIATED state). See note 4 $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + LcmOperation: title: LcmOperation enum: - - INSTATIATE - - OPERATE - - TERMINATE + - INSTATIATE + - OPERATE + - TERMINATE type: string description: Type of the actual LCM operation represented by this application instance LCM operation occurrence examples: - - INSTATIATE + - INSTATIATE + AppLcmOpOccNotification: title: AppLcmOpOccNotification required: - - id - - notificationType - - operationType - - operationState - - subscriptionId - - timeStamp - - appLcmOpOccId - - appInstanceId - - _links + - id + - notificationType + - operationType + - operationState + - subscriptionId + - timeStamp + - appLcmOpOccId + - appInstanceId + - _links type: object properties: id: type: string - description: "''" + description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value. notificationType: type: string description: Discriminator for the different notification types. Shall be set to "AppLcmOpOccStateChangeSubscription" for this notification type. @@ -2045,6 +1650,7 @@ components: - TERMINATE operationState: type: string + description: Operation state. enum: - STARTING - PROCESSING @@ -2055,6 +1661,8 @@ components: type: string description: Identifier of the subscription related to this notification. timeStamp: + type: object + description: Date and time of the notification generation. $ref: '#/components/schemas/TimeStamp' appLcmOpOccId: type: string @@ -2063,35 +1671,40 @@ components: type: string description: Identifier of application instance. _links: + type: object $ref: '#/components/schemas/AppLcmOpOccNotification.links' description: "'This data type represents a notification related to state changes of an application LCM operation occurrence which informs the subscribers'" - - - AppInstanceIdentifierCreationNotification: title: AppInstanceIdentifierCreationNotification required: - - id - - notificationType - - subscriptionId - - timeStamp - - appInstanceId - - _links + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links type: object properties: id: type: string + description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value. notificationType: type: string description: Discriminator for the different notification types. Shall be set to "AppIdentifierCreationSubscription" for this notification type. subscriptionId: type: string + description: Identifier of the subscription related to this notification. timeStamp: + type: object + description: Date and time of the notification generation. $ref: '#/components/schemas/TimeStamp' appInstanceId: type: string + description: The created application instance Identifier. _links: + type: object + description: Links to resources related to this notification. $ref: '#/components/schemas/Notification._links' Notification._links: @@ -2101,83 +1714,120 @@ components: - appInstance properties: subscription: + type: object + description: A link to the related subscription. $ref: '#/components/schemas/LinkType' appInstance: + type: object + description: Link to the resource representing the created application instance. $ref: '#/components/schemas/LinkType' AppInstanceIdentifierDeletionNotification: title: AppInstanceIdentifierDeletionNotification required: - - id - - notificationType - - subscriptionId - - timeStamp - - appInstanceId - - _links + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links type: object properties: id: type: string + description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all these notifications shall have the same value. notificationType: type: string description: Discriminator for the different notification types. Shall be set to "AppIdentifierDeletionSubscription" for this notification type. subscriptionId: type: string + description: Identifier of the subscription related to this notification. timeStamp: + type: object + description: Date and time of the notification generation. $ref: '#/components/schemas/TimeStamp' appInstanceId: type: string + description: The deleted application instance Identifier. _links: + type: object + description: Links to resources related to this notification. $ref: '#/components/schemas/Notification._links' - AppLcmOpOccNotification.links: title: AppLcmOpOccNotification.links required: - - appInstance - - subscription - - appLcmOpOcc + - appInstance + - subscription + - appLcmOpOcc type: object properties: appInstance: + type: object $ref: '#/components/schemas/LinkType' subscription: + type: object $ref: '#/components/schemas/LinkType' appLcmOpOcc: + type: object $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + InstantiateAppRequest: title: InstantiateAppRequest required: - - selectedMECHostInfo + - selectedMECHostInfo type: object properties: locationConstraints: + type: object + description: Defines the location constraints for the application instance to be created. See note 3. $ref: '#/components/schemas/LocationConstraints' selectedMECHostInfo: type: array items: $ref: '#/components/schemas/MECHostInformation' - description: Describes the information of selected host for the application instance. See note 2. + description: | + Describes the information of selected host for the application instance. See note 2. vimConnectionInfo: type: array items: $ref: '#/components/schemas/VimConnectionInfo' description: >- Information about VIM connections to be used for managing the resources for the application instance, or refer to external / externally-managed virtual links. - This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2. virtualComputeDescriptor: - type: string - description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize the application instance to be created. This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. + type: object + items: + $ref: '#/components/schemas/VirtualComputeDescriptor' + description: | + Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM to realize the application + instance to be created. See note 1 and note 4. + osContainerDescriptor: + type: array + items: + $ref: '#/components/schemas/OsContainerDescriptor' + description: | + Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the + same host and same network namespace. See note 1, note 4 and note 5. virtualStorageDescriptor: type: array items: - type: string - description: Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + $ref: '#/components/schemas/VirtualStorageDescriptor' + description: | + Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. appTermCandsForCoord: - $ref: '#/components/schemas/AppTermCandsForCoord' - + type: object + items: + $ref: '#/components/schemas/AppTermCandsForCoord' + description: Provides sets of applications as termination candidate alternatives that the MEO/MEAO shall select from when utilizing the coordinate LCM operation exchange in pre-emption situations (see step 3 in clause 5.3.1). If this attribute is omitted, the MEO/MEAO shall make its own selection for the coordinate LCM operation exchange. See note 3. + description: | + NOTE 1: This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. + NOTE 2: This field applies to Mm3 reference point only. + NOTE 3: This field applies to Mm1 reference point only. + NOTE 4: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. + NOTE 5: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + AppTermCandsForCoord: type: object required: @@ -2185,10 +1835,270 @@ components: properties: terminationOptions: type: array + description: Sets of application options for the MEO/MEAO to select from as candidates for termination. The MEO/MEAO shall select one or more of these alternate options to pass to the OSS when utilizing the LCM coordination exchange in pre-emption situations. For each option, the MEO/MEAO may select all, or a subset, of the candidate set's members. items: - $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions' + $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions' + + VirtualStorageDescriptor: + type: object + required: + - id + - typeOfStorage + properties: + id: + type: string + description: Unique identifier of this VirtualStorageDesc in the VNFD. + typeOfStorage: + type: string + description: Type of virtualised storage resource. + enum: + - BLOCK + - OBJECT + - FILE + blockStorageData: + type: object + $ref: '#/components/schemas/BlockStorageData' + description: Details of block storage. + objectStorageData: + type: object + $ref: '#/components/schemas/ObjectStorageData' + description: Details of object storage. + fileStorageData: + type: object + $ref: '#/components/schemas/FileStorageData' + description: Details of file storage. + nfviMaintenanceInfo: + type: object + $ref: '#/components/schemas/NfviMaintenanceInfo' + description: Information on the rules to be observed during NFVI operation and maintenance. + perVnfcInstance: + type: boolean + description: Indicates whether the virtual storage resource shall be instantiated per VNFC instance. + + NfviMaintenanceInfo: + type: object + required: + - impactNotificationLeadTime + properties: + impactNotificationLeadTime: + type: number + description: The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + isImpactMitigationRequested: + type: boolean + description: When set to True, it is requested that at the time of the notification of an upcoming change that is expected to have an impact on the VNF, virtualised resource(s) of the same characteristics as the impacted ones is/are provided to compensate for the impact. + supportedMigrationType: + type: array + description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, specifies the allowed migration types in the order of preference in case of an impact starting with the most preferred type. For LIVE_MIGRATION, see note 1. + items: + type: string + enum: + - NO_MIGRATION + - OFFLINE_MIGRATION + - LIVE_MIGRATION + maxUndetectableInterruptionTime: + type: number + description: Applicable to VirtualComputeDesc and VirtualStorageDesc. When present, it specifies the maximum interruption time that can go undetected at the VNF level and therefore which will not trigger VNF-internal recovery during live migration. (see note 1) + minRecoveryTimeBetweenImpacts: + type: number + description: When present, it specifies the time required by the group to recover from an impact, thus, the minimum time requested between consecutive impacts of the group. (see note 2.) + maxNumberOfImpactedInstances: + type: object + $ref: '#/components/schemas/MaxNumberOfImpactedInstances' + description: When present, specifies for different group sizes the maximum number of instances that can be impacted simultaneously within the group of virtualised resources without losing functionality. Zero cardinality indicates no constraint (see note 2). MaxNumberOfImpactedInstances is defined in clause 7.1.8.18. See note 3. + minNumberOfPreservedInstances: + type: object + $ref: '#/components/schemas/MinNumberOfPreservedInstances' + description: When present, specifies for different group sizes the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources. Zero cardinality indicates no constraint (see note 2). MinNumberOfPreservedInstances is defined in clause 7.1.8.22.See note 3. + description: | + NOTE 1: When the maximum undetectable interruption time is specified it constrains the live migration. If it cannot be + guaranteed on an NFVI that the interruption caused by the live migration will be less than the indicated + maximum undetectable interruption time, then life migration should be downgraded according to the order of preference. + NOTE 2: Impacts to instances of the group happening within the minimum recovery time are considered simultaneous + impacts. + NOTE 3: Either "maxNumberOfImpactedInstances" or "minNumberOfPreservedInstances" may be provided, but not both + + MaxNumberOfImpactedInstances: + type: object + required: + - maxNumberOfImpactedInstances + properties: + groupSize: + type: integer + description: Determines the size of the group for which the maxNumberOfImpactedInstances is specified. + maxNumberOfImpactedInstances: + type: integer + description: The maximum number of instances that can be impacted simultaneously within the group of the specified size. + description: | + NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form an ascending ordered list of groupSizes. + NOTE 2: The number of instances in the group for which the maxNumberOfImpactedInstances is specified may be equal to groupSize or less. When the number of instances is less than + the groupSize, it shall be at least 1 if this is the first groupSize in the ordered list of groupSizes, or it shall be greater by at least 1 than the previous groupSize in the ordered list of groupSizes. + + CommunicationInterface: + type: object + properties: + ipAddresses: + type: array + description: Entry point information of the service as one or more pairs of IP address and port. + items: + $ref: '#/components/schemas/ipAddresses' + + ipAddresses: + type: object + required: + - host + - port + properties: + host: + type: string + description: Host portion of the address. + port: + type: integer + description: Port portion of the address. + + MinNumberOfPreservedInstances: + type: object + required: + - minNumberOfPreservedInstances + properties: + groupSize: + type: integer + description: When present, determines the size of the group for which the minNumberOfPreservedInstances is specified. Otherwise, the size is not limited. + minNumberOfPreservedInstances: + type: integer + description: The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + description: | + NOTE 1: Each groupSize value specified for a group of virtual resources shall be unique, and it shall be possible to form + an ascending ordered list of groupSizes. + NOTE 2: The number of instances in the group for which the minNumberOfPreservedInstances is specified may be equal + to groupSize or less. + + FileStorageData: + type: object + required: + - sizeOfStorage + - fileSystemProtocol + - intVirtualLinkDesc + properties: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + fileSystemProtocol: + type: string + description: The shared file system protocol (e.g. NFS, CIFS). + intVirtualLinkDesc: + type: object + $ref: '#/components/schemas/VnfVirtualLinkDesc' + description: Reference of the internal VLD which this file storage connects to. + + VnfVirtualLinkDesc: + type: object + required: + - virtualLinkDescId + - virtualLinkDescFlavour + - connectivityType + properties: + virtualLinkDescId: + type: string + description: Unique identifier of this internal VLD in VNFD. + virtualLinkDescFlavour: + type: array + description: Describes a specific flavour of the VL with specific bitrate requirements. + items: + $ref: '#/components/schemas/VirtualLinkDescFlavour' + connectivityType: + type: object + description: See clause 7.1.7.3. + $ref: '#/components/schemas/ConnectivityType' + testAccess: + type: array + description: Specifies test access facilities expected on the VL. + items: + type: string + example: passive monitoring + description: + type: string + description: Provides human-readable information on the purpose of the VL. + example: control plane traffic + monitoringParameter: + type: array + description: Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + items: + $ref: '#/components/schemas/MonitoringParameter' + nfviMaintenanceInfo: + type: object + description: When present, provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance (e.g. NFVI resource upgrades). NfviMaintenanceInfo is defined in clause 7.1.8.17. + $ref: '#/components/schemas/NfviMaintenanceInfo' + externallyManaged: + type: string + description: Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + enum: + - REQUIRED + - ALLOWED + default: ALLOWED + + ConnectivityType: + type: object + required: + - layerProtocol + properties: + layerProtocol: + type: array + description: | + Specifies the protocols that the VL uses See note 1 and note 2. + items: + type: string + enum: + - Ethernet + - MPLS + - ODU2 + - IPV4 + - IPV6 + - Pseudo-Wire + - Etc + minItems: 1 + flowPattern: + type: string + description: Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). + description: | + NOTE 1 The top layer protocol of the VL protocol stack shall always be provided. The lower layer protocols may be included when there are specific requirements on these layers. + NOTE 2 If more than 1 values are present, the first value represents the highest layer protocol data, and the last value represents the lowest layer protocol data. + + VirtualLinkDescFlavour: + type: object + required: + - flavourId + properties: + flavourId: + type: string + description: Identifies a flavour within a VnfVirtualLinkDesc. + qos: + type: object + $ref: '#/components/schemas/QoS' + description: QoS of the VL. + + QoS: + type: object + required: + - latency + - packetDelayVariation + properties: + latency: + type: number + description: Latency of the VL in milliseconds. + packetDelayVariation: + type: number + description: Packet delay variation of the VL in milliseconds. + packetLossRatio: + type: number + description: Packet loss ratio of the VL in percentage. + + ObjectStorageData: + type: object + properties: + maxSizeOfStorage: + type: number + description: Max size of virtualised storage resource in GB. - AppTermCandsForCoord.terminationOptions: type: object required: @@ -2196,63 +2106,417 @@ components: properties: appInstIdTerminationCands: type: array + description: List of application instance identifiers, constituting a candidate set for termination. items: type: string + LinkType: title: LinkType required: - - href + - href type: object properties: href: type: string description: URI referring to a resource + + OsContainerDescriptor: + title: OsContainerDescriptor + type: object + required: + - osContainerDescId + - name + - description + - swImageDesc + properties: + osContainerDescId: + type: string + description: Unique identifier of this OsContainerDesc in the VNFD. + name: + type: string + description: Human readable name of this OS container. + description: + type: string + description: Human readable description of this OS container. + requestedCpuResources: + type: integer + description: Number of CPU resources requested for the container (e.g. in milli-CPU-s). + requestedMemoryResources: + type: number + description: Amount of memory resources requested for the container (e.g. in MB). + requestedEphemeralStorageResources: + type: number + description: Size of ephemeral storage resources requested for the container (e.g. in GB). + extendedResourceRequests: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: An array of key-value pairs of extended resources required by the container see note. + cpuResourceLimit: + type: integer + description: Number of CPU resources the container can maximally use (e.g. in milli-CPU). + memoryResourceLimit: + type: number + description: Amount of memory resources the container can maximally use (e.g. in MB). + ephemeralStorageResourceLimit: + type: number + description: Size of ephemeral storage resources the container can maximally use (e.g. in GB). + hugePageResources: + type: object + description: Specifies HugePages resources requested for the container, which the container can maximally use. + additionalProperties: + type: string + cpuPinningRequirements: + type: object + $ref: '#/components/schemas/VirtualCpuPinningData' + description: Requirements for CPU pinning configuration for this OS container. + swImageDesc: + type: object + $ref: '#/components/schemas/SwImageDesc' + description: Describes the software image realizing this OS container. + bootData: + type: string + description: Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. + monitoringParameters: + type: array + items: + $ref: '#/components/schemas/MonitoringParameter' + description: Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + + MonitoringParameter: + type: object + required: + - monitoringParameterId + - performanceMetric + properties: + monitoringParameterId: + type: string + description: Unique identifier of the monitoring parameter. + name: + type: string + description: Human readable name of the monitoring parameter. + performanceMetric: + type: string + description: Specifies the virtualised resource performance metric. + collectionPeriod: + type: string + description: An attribute that describes the periodicity at which to collect the performance information. + + VirtualComputeDescriptor: + title: VirtualComputeDescriptor + type: object + required: + - virtualComputeDescId + - virtualMemory + - virtualCpu + properties: + virtualComputeDescId: + type: string + description: Unique identifier of this VirtualComputeDesc in the VNFD. + logicalNode: + type: array + description: The logical node requirements. + items: + $ref: '#/components/schemas/LogicalNodeRequirements' + requestAdditionalCapabilities: + type: array + description: Specifies requirements for additional capabilities. These may be for a range of purposes. One example is acceleration related capabilities. See clause 7.1.9.5. + items: + $ref: '#/components/schemas/RequestedAdditionalCapabilityData' + computeRequirements: + description: Specifies compute requirements. + type: array + items: + type: string + format: not-specified + virtualMemory: + type: object + description: The virtual memory of the virtualised compute. See clause 7.1.9.3.2. + $ref: '#/components/schemas/VirtualMemoryData' + virtualCpu: + type: object + description: The virtual CPU(s) of the virtualised compute. See clause 7.1.9.2.3. + $ref: '#/components/schemas/VirtualCpuData' + virtualDisk: + type: array + description: The local or ephemeral disk(s) of the virtualised compute. See clause 7.1.9.4.3. + items: + $ref: '#/components/schemas/BlockStorageData' + + BlockStorageData: + type: object + required: + - sizeOfStorage + properties: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + vduStorageRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: An array of key-value pairs that articulate the storage deployment requirements. + rdmaEnabled: + type: boolean + description: Indicate if the storage support RDMA. + swImageDesc: + type: object + $ref: '#/components/schemas/SwImageDesc' + description: | + References the software image to be loaded on the VirtualStorage resource created + based on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note. + + SwImageDesc: + type: object + required: + - id + - name + - version + - containerFormat + - swImage + properties: + id: + type: string + description: The identifier of this software image. + name: + type: string + description: The name of this software image. + version: + type: string + description: The version of this software image. + checksum: + $ref: '#/components/schemas/ChecksumData' + description: The checksum of the software image file. See note 3. + containerFormat: + type: string + description: The container format describes the container file format in which software image is provided. + diskFormat: + type: string + description: The disk format of a software image is the format of the underlying disk image. See note 1. + minDisk: + type: number + description: The minimal disk size requirement for this software image. The value of the "size of storage" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1. + minRam: + type: number + description: The minimal RAM requirement for this software image. The value of the "size" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2. + size: + type: number + description: The size of this software image file. See note 3. + swImage: + type: object + $ref: '#/components/schemas/SwImageDesc' + description: This is a reference to the actual software image. The reference can be relative to the root of the VNF Package or can be a URL. + operatingSystem: + type: string + description: Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used. + supportedVirtualisationEnvironment: + type: array + items: + type: string + description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + description: | + NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. + NOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. + NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. + + ChecksumData: + type: object + required: + - algorithm + - hash + properties: + algorithm: + type: string + description: Specifies the algorithm used to obtain the checksum value. See note. + hash: + type: string + description: | + Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + description: | + NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. + + LogicalNodeRequirements: + type: object + required: + - id + - logicalNodeRequirementDetail + properties: + id: + type: string + format: uuid + description: Identifies this set of logical node requirements + logicalNodeRequirementDetail: + description: > + The logical node-level compute, memory and I/O requirements. An array of key-value pairs that + articulate the deployment requirements. This could include the number of CPU cores on this logical + node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel + via the libnuma library) or a requirement related to the association of an I/O device with the logical node. + type: array + items: + type: string + format: not-specified + + RequestedAdditionalCapabilityData: + type: object + required: + - requestedAdditionalCapabilityName + - supportMandatory + - targetPerformanceParameters + properties: + requestedAdditionalCapabilityName: + type: string + description: Specifies a requested additional capability for the VDU + supportMandatory: + type: boolean + description: Indicates whether the requested additional capability is mandatory for successful operation + minRequestedAdditionalCapabilityVersion: + type: string + description: Specifies the minimum version of the requested additional capability + preferredRequestedAdditionalCapabilityVersion: + type: string + description: Specifies the preferred version of the requested additional capability + targetPerformanceParameters: + type: array + description: Specifies specific attributes, dependent on the requested additional capability type. + items: + $ref: '#/components/schemas/KeyValuePairs' + + KeyValuePairs: + description: | + This data 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 8259. + type: object + properties: + key: + type: string + value: + type: string + + VirtualMemoryData: + type: object + required: + - virtualMemSize + properties: + virtualMemSize: + type: number + description: Amount of virtual memory in MB. + virtualMemOversubscriptionPolicy: + type: string + description: | + The memory core oversubscription policy in terms of virtual memory to physical memory + on the platform. The cardinality can be 0 during the allocation request, if no particular + value is requested. + vduMemRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the memory for the VDU. + numaEnabled: + type: boolean + description: Specifies the memory allocation to be cognisant of the relevant process/core allocation. + hugePagesRequirements: + type: string + description: Specifies requirements on the huge pages resources for the virtual memory. + + VirtualCpuData: + type: object + required: + - numVirtualCpu + properties: + cpuArchitecture: + type: string + description: CPU architecture type. Examples are x86, ARM. + numVirtualCpu: + type: integer + description: Number of virtual CPUs. + virtualCpuClock: + type: number + description: Minimum virtual CPU clock rate (e.g. in MHz). + virtualCpuOversubscriptionPolicy: + type: string + description: The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + vduCpuRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + virtualCpuPinning: + $ref: '#/components/schemas/VirtualCpuPinningData' + + VirtualCpuPinningData: + type: object + properties: + virtualCpuPinningPolicy: + type: string + description: Indicates the policy for CPU pinning. + enum: + - STATIC + - DYNAMIC + virtualCpuPinningRule: + type: array + items: + type: string + description: List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of "STATIC" virtualCpuPinningPolicy. + LocationConstraints: title: LocationConstraints type: object properties: countryCode: type: string - description: The two-letter ISO 3166 country code in capital letters. + description: The two-letter ISO 3166 country code in capital letters. See note. civicAddressElement: type: array items: $ref: '#/components/schemas/CivicAddressElement' area: - type: object - description: Geographic area. Shall be absent if the "civicAddressElement" attribute is present. The content of this attribute shall follow the provisions for the "Polygon" geometry object as defined in IETF RFC 7946 [8], for which - description: "'The LocationConstraints data type supports the specification of MEC application requirements related to MEC application deployment location constraints. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776'" + type: string + description: Geographic area. Shall be absent if the "civicAddressElement" attribute is present. The content of this attribute shall follow the provisions for the "Polygon" geometry object as defined in IETF RFC 7946 [8], for which the "type" member shall be set to the value "Polygon". See note. + + description: | + "'The LocationConstraints data type supports the specification of MEC application requirements related to MEC application deployment location constraints. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776'" + NOTE: If both "countryCode" and "area" are present, no conflicts should exist between the values of these two + attributes. In case of conflicts, the API producer (e.g. MEO, MEAO) shall disregard parts of the geographic + area signalled by "area" that are outside the boundaries of the country signalled by "countryCode". If + "countryCode" is absent, it is solely the "area" attribute that defines the location constraint. + CivicAddressElement: title: CivicAddressElement required: - - caType - - caValue + - caType + - caValue type: object properties: caType: type: integer description: "'Describe the content type of caValue. The value of caType shall comply with section 3.4 of IETF RFC 4776.'" - contentEncoding: int32 + format: int32 caValue: type: string description: "'Content of civic address element corresponding to the caType. The format caValue shall comply with section 3.4 of IETF RFC 4776.'" description: "'The civic address.'" + MECHostInformation: title: MECHostInformation required: - - hostId + - hostId type: object properties: hostId: - type: object - description: Deployment-specific information to identify a MEC host. This information can be structured to cater for host identification schemes that are more complex than a simple identifier, e.g. when referring to the structure of an NFVI. + $ref: '#/components/schemas/KeyValuePairs' + description: Deployment-specific information to identify a MEC host. See note. hostName: type: string description: Human-readable name of MEC host. + description: | + NOTE: This information can be structured to cater for host identification schemes that are more + complex than a simple identifier, e.g. when referring to the structure of an NFVI. + OperateAppRequest: title: OperateAppRequest required: - - changeStateTo + - changeStateTo type: object properties: changeStateTo: @@ -2260,27 +2524,38 @@ components: gracefulStopTimeout: type: integer description: The time interval (in seconds) to wait for the application instance to be taken out of service during graceful stop, before stopping the application. See note 1 and note 2. - contentEncoding: int32 + format: int32 stopType: + description: The stop type. See notes 1 and 3. $ref: '#/components/schemas/StopType' + description: | + NOTE 1: The "stopType" and "gracefulStopTimeout" attributes shall be absent, when the "changeStateTo" attribute is + equal to "STARTED". + NOTE 2: The "gracefulStopTimeout" attribute shall be present, when the "changeStateTo" is equal to "STOPPED" and + the "stopType" attribute is equal to "GRACEFUL". The "gracefulStopTimeout" attribute shall be absent, when + the "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute is equal to "FORCEFUL". + NOTE 3: The request shall be treated as if the "stopType" attribute was set to "FORCEFUL", when the + "changeStateTo" attribute is equal to "STOPPED" and the "stopType" attribute is absent + StopType: title: StopType enum: - - FORCEFUL - - GRACEFUL + - FORCEFUL + - GRACEFUL type: string - description: Signals forceful or graceful stop examples: - - FORCEFUL + - FORCEFUL + ChangeStateTo: title: ChangeStateTo enum: - - STARTED - - STOPPED + - STARTED + - STOPPED type: string description: The desired operational state examples: - - STARTED + - STARTED + ProblemDetails: title: ProblemDetails type: object @@ -2294,83 +2569,145 @@ components: status: type: integer description: The HTTP status code for this occurrence of the problem - contentEncoding: int32 + format: int32 title: type: string description: A short, human-readable summary of the problem type type: type: string description: A URI reference according to IETF RFC 3986 that identifies the problem type + TerminateAppRequest: title: TerminateAppRequest required: - - terminationType + - terminationType type: object properties: gracefulTerminationTimeout: type: integer - description: "This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting down the application and releasing the resources. \nThe unit is seconds.\nIf not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources." - contentEncoding: int32 + description: "This attribute is only applicable in case of graceful termination. It defines the time to wait for the application instance to be taken out of service before shutting + down the application and releasing the resources. \nThe unit is seconds.\nIf not given and the \"terminationType\" attribute is set to \"GRACEFUL\", it is expected to wait for the successful taking out of service of the application, no matter how long it takes, before shutting down the application and releasing the resources." + format: int32 terminationType: $ref: '#/components/schemas/TerminationType' + description: | + NOTE: If the application instance is still in service, requesting forceful termination can adversely impact service. + TimeStamp: title: TimeStamp required: - - nanoSeconds - - seconds + - nanoSeconds + - seconds type: object properties: nanoSeconds: type: integer description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - contentEncoding: int32 + format: int32 seconds: type: integer description: The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - contentEncoding: int32 + format: int32 + TerminationType: title: TerminationType enum: - - FORCEFUL - - GRACEFUL + - FORCEFUL + - GRACEFUL type: string description: "'Indicates whether forceful or graceful termination is requested.'" examples: - FORCEFUL + VimConnectionInfo: title: VimConnectionInfo required: - - id - - vimType + - id + - vimType type: object properties: accessInfo: - type: object - description: "'This data 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 8259'" + $ref: '#/components/schemas/KeyValuePairs' + description: | + This data 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 8259. extra: - type: object - description: "'This data 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 8259'" + $ref: '#/components/schemas/KeyValuePairs' + description: | + This data 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 8259. id: type: string description: The identifier of the VIM Connection. This identifier is managed by the MEO. interfaceInfo: - type: object - description: "'This data 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 8259'" + $ref: '#/components/schemas/KeyValuePairs' + description: | + This data 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 8259. vimId: type: string - description: The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present to address additional information about the VIM if such information has been configured into the MEPM by means outside the scope of the present document, and should be absent otherwise. + description: + The identifier of the VIM instance. This identifier is managed by the MEO.Shall be present + to address additional information about the VIM if such information has been configured into + the MEPM by means outside the scope of the present document, and should be absent otherwise. vimType: type: string - description: Discriminator for the different types of the VIM information.The value of this attribute determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type of the VIM.The set of permitted values is expected to change over time as new types or versions of VIMs become available. + description: | + Discriminator for the different types of the VIM information.The value of this attribute + determines the structure of the "interfaceInfo" and "accessInfo" attributes, based on the type + of the VIM.The set of permitted values is expected to change over time as new types or versions + of VIMs become available. + Links: title: Links required: - - subscription + - subscription type: object properties: subscription: $ref: '#/components/schemas/LinkType' description: Links to resources related to this notification. + responses: + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests: used when a rate limiter has triggered.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + security: - {} diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index 2b0b635ba82bbdc751fd0cedf126fc0e38181a9d..164c89bf43a97d46375348a28cb01a4c3d940fef 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -1,3124 +1,3178 @@ { - "openapi": "3.1.0", - "info": { - "title": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management", - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.", - "license": { - "name": "BSD-3-Clause", - "url": "https://forge.etsi.org/legal-matters" - }, - "contact": { - "name": "ETSI Forge", - "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", - "email": "cti_support@etsi.org" - }, - "version": "2.2.1" - }, - "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", - "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" - }, - "tags": [ - { - "name": "app-pkgm", - "description": "App Package management" - }, - { - "name": "app-pkgm-notifications", - "description": "App Package management notifications" - } - ], - "servers": [ - { - "url": "https://localhost/app_pkgm/v1", - "variables": {} - } - ], - "paths": { - "/app_packages": { - "post": { - "tags": [ - "app-pkgm" - ], - "summary": "Create a resource for on-boarding an application package to a MEO/MEAO", - "description": "Create a resource for on-boarding an application package to a MEO/MEAO", - "operationId": "app_packagesPOST", - "parameters": [], - "requestBody": { - "description": "Resource to be created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAppPkg" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "Successful response for resource creation", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfo", - "description": "The response body shall contain a representation of the application package resource", - "contentMediaType": "application/json" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Queries information relating to on-boarded application packages in the MEO/MEAO'", - "description": "queries information relating to on-boarded application packages in the MEO/MEAO", - "operationId": "app_packagesGET", - "parameters": [ - { - "name": "filter", - "in": "query", - "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "all_fields", - "in": "query", - "description": "Include all complex attributes in the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be included into the response", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be excluded from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_default", - "in": "query", - "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Contains a representation of the application package resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AppPkgInfo" - }, - "description": "", - "contentMediaType": "application/json" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/onboarded_app_packages": { - "post": { - "tags": [ - "app-pkgm" - ], - "summary": "Create a resource for on-boarding an application package to a MEO/MEAO", - "description": "Create a resource for on-boarding an application package to a MEO/MEAO", - "operationId": "onboarded_app_packagesPOST", - "parameters": [], - "requestBody": { - "description": "Resource to be created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAppPkg" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "Successful response for resource creation", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfo", - "description": "The response body shall contain a representation of the application package resource", - "contentMediaType": "application/json" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Queries information relating to on-boarded application packages in the MEO/MEAO'", - "description": "queries information relating to on-boarded application packages in the MEO/MEAO", - "operationId": "onboarded_app_packagesGET", - "parameters": [ - { - "name": "filter", - "in": "query", - "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "all_fields", - "in": "query", - "description": "Include all complex attributes in the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be included into the response", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be excluded from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_default", - "in": "query", - "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Contains a representation of the application package resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AppPkgInfo" - }, - "description": "", - "contentMediaType": "application/json" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/app_packages/{appPkgId}": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Queries the information related to individual application package resources", - "description": "Queries the information related to individual application package resources", - "operationId": "app_packageGET", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Contains a representation of the application package resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfo" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "delete": { - "tags": [ - "app-pkgm" - ], - "summary": "Deletes an individual application package resources in MEO/MEAO", - "description": "Deletes an individual application package resources in MEO/MEAO", - "operationId": "app_packageDELETE", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content", - "headers": {}, - "content": {} - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "patch": { - "tags": [ - "app-pkgm" - ], - "summary": "Updates the operational state of an individual application package resource", - "description": "Updates the operational state of an individual application package resources", - "operationId": "app_packagePATCH", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "Parameters for application package information modification.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Shows that the operation has been completed successfully", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/onboarded_app_packages/{appPkgId}": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Queries the information related to individual application package resources", - "description": "Queries the information related to individual application package resources", - "operationId": "onboarded_app_packageGET", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Contains a representation of the application package resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfo" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "delete": { - "tags": [ - "app-pkgm" - ], - "summary": "Deletes an individual application package resources in MEO/MEAO", - "description": "Deletes an individual application package resources in MEO/MEAO", - "operationId": "onboarded_app_packageDELETE", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content", - "headers": {}, - "content": {} - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "patch": { - "tags": [ - "app-pkgm" - ], - "summary": "Updates the operational state of an individual application package resource", - "description": "Updates the operational state of an individual application package resources", - "operationId": "onboarded_app_packagePATCH", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "Parameters for application package information modification.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Shows that the operation has been completed successfully", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/subscriptions": { - "post": { - "tags": [ - "app-pkgm" - ], - "summary": "Subscribe to notifications about on-boarding an application package", - "description": "Subscribe to notifications about on-boarding an application package", - "operationId": "subscriptionsPOST", - "parameters": [], - "requestBody": { - "description": "The input parameters of subscribe operation to notifications", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscription" - } - } - }, - "required": true - }, - "responses": { - "201": { - "description": "Successful response for created subscription", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "callbacks": { - "notification": { - "{$request.body#/subscription.href}": { - "post": { - "summary": "Callback POST used to send a notification", - "description": " The notification is triggered when a new application package is onboarded", - "operationId": "notificationPOST", - "requestBody": { - "description": "Subscription notification", - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgNotification" - } - } - } - }, - "responses": { - "204": { - "description": "No content" - }, - "404": { - "description": "Not found" - } - } - } - } - } - } - }, - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO", - "description": "used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO package", - "operationId": "subscriptionsGET", - "parameters": [], - "responses": { - "200": { - "description": "List of zero or more subscriptions", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionLinkList" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/subscriptions/{subscriptionId}": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Used to represent an individual subscription to notifications about application package changes.", - "description": "Used to represent an individual subscription to notifications about application package changes.", - "operationId": "individualSubscriptionGET", - "parameters": [ - { - "name": "subscriptionId", - "in": "path", - "description": "Identifier of an individual subscription to notifications about application package changes", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "a response body containing a representation of the resource shall be returned.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo" - } - } - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "delete": { - "tags": [ - "app-pkgm" - ], - "summary": "Deletes the individual subscription to notifications about application package changes in MEO or MEAO.", - "description": "Deletes the individual subscription to notifications about application package changes in MEO or MEAO.", - "operationId": "individualSubscriptionDELETE", - "parameters": [ - { - "name": "subscriptionId", - "in": "path", - "description": "Identifier of an individual subscription to notifications about application package changes", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content", - "headers": {}, - "content": {} - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/app_packages/{appPkgId}/appd": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Reads the content of the AppD of on-boarded individual application package resources.", - "description": "Reads the content of the AppD of on-boarded individual application package resources.", - "operationId": "appPkgIdGET", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an on-boarded individual application package", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - }, - { - "name": "filter", - "in": "query", - "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "all_fields", - "in": "query", - "description": "Include all complex attributes in the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be included into the response", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be excluded from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_default", - "in": "query", - "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Content of the AppD is returned.", - "headers": {}, - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/AppD" - } - }, - "application/zip": {} - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/onboarded_app_packages/{appDId}/appd": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Reads the content of the AppD of on-boarded individual application package resources.", - "description": "Reads the content of the AppD of on-boarded individual application package resources.", - "operationId": "appDGET", - "parameters": [ - { - "name": "appDId", - "in": "path", - "description": "Identifier of an application descriptor", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - }, - { - "name": "filter", - "in": "query", - "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "all_fields", - "in": "query", - "description": "Include all complex attributes in the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be included into the response", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be excluded from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_default", - "in": "query", - "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Content of the AppD is returned.", - "headers": {}, - "content": { - "text/plain": { - "schema": { - "$ref": "#/components/schemas/AppD" - } - }, - "application/zip": {} - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/app_packages/{appPkgId}/package_content": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "description": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "operationId": "appPkgGET", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an on-boarded individual application package", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.", - "headers": {}, - "content": { - "application/zip": {} - } - }, - "206": { - "description": "On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned.", - "headers": {}, - "content": { - "application/zip": {} - } - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "416": { - "description": "Range Not Satisfiable .", - "headers": {}, - "content": {} - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "put": { - "tags": [ - "app-pkgm" - ], - "summary": "Uploads the content of application package.", - "description": "Uploads the content of application package.", - "operationId": "appPkgPUT", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an on-boarded individual application package", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "", - "content": { - "application/zip": {} - }, - "required": false - }, - "responses": { - "202": { - "description": "The application package has been accepted for uploading, but the processing has not been completed.", - "headers": {}, - "content": {} - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/onboarded_app_packages/{appDId}/package_content": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "description": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "operationId": "appDIdGET", - "parameters": [ - { - "name": "appDId", - "in": "path", - "description": "Identifier of an application descriptor", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.", - "headers": {}, - "content": {} - }, - "206": { - "description": "On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned.", - "headers": {}, - "content": {} - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "416": { - "description": "Range Not Satisfiable .", - "headers": {}, - "content": {} - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "put": { - "tags": [ - "app-pkgm" - ], - "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "description": "Uploads the content of application package.", - "operationId": "appDIdPUT", - "parameters": [ - { - "name": "appDId", - "in": "path", - "description": "Identifier of an application descriptor", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "description": "", - "content": { - "application/zip": {} - }, - "required": false - }, - "responses": { - "202": { - "description": "The application package has been accepted for uploading, but the processing has not been completed.", - "headers": {}, - "content": {} - }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - }, - "/user_defined_notification": { - "post": { - "tags": [ - "app-pkgm-notifications" - ], - "summary": "Registers a notification endpoint to notify application package operations", - "description": "Registers a notification endpoint to notify application package operations", - "operationId": "app_pkg_notificationPOST", - "parameters": [], - "requestBody": { - "description": "Notification endpoint to be created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgNotification" - } - } - }, - "required": true - }, - "responses": { - "204": { - "description": "No Content", - "headers": {}, - "content": {} - }, - "401": { - "description": "Unauthorized : used when the client did not submit credentials.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden : operation is not allowed given the current status of the resource.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "deprecated": false - }, - "parameters": [] - } - }, - "components": { - "schemas": { - "AppD": { - "title": "AppD", - "required": [ - "appDId", - "appDVersion", - "appDescription", - "appName", - "appProvider", - "appSoftVersion", - "mecVersion", - "swImageDescriptor", - "virtualComputeDescriptor" - ], - "type": "object", - "properties": { - "appDId": { - "type": "string", - "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1." - }, - "appDNSRule": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/DNSRuleDescriptor" - }, - "description": "Describes DNS rules the MEC application requires." - }, - "appDVersion": { - "type": "string", - "description": "Identifies the version of the application descriptor." - }, - "appDescription": { - "type": "string", - "description": "Human readable description of the MEC application." - }, - "appExtCpd": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AppExternalCpd" - }, - "description": "Describes external interface(s) exposed by this MEC application." - }, - "appFeatureOptional": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency" - }, - "description": "Describes features a MEC application may use if available." - }, - "appFeatureRequired": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency" - }, - "description": "Describes features a MEC application requires to run." - }, - "appInfoName": { - "type": "string", - "description": "Human readable name for the MEC application." - }, - "appLatency": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/LatencyDescriptor" - }, - "appName": { - "type": "string", - "description": "Name to identify the MEC application." - }, - "appProvider": { - "type": "string", - "description": "Provider of the application and of the AppD." - }, - "appServiceOptional": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency" - }, - "description": "Describes services a MEC application may use if available." - }, - "appServiceProduced": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDescriptor" - }, - "description": "Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps." - }, - "appServiceRequired": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency" - }, - "description": "Describes services a MEC application requires to run." - }, - "appSoftVersion": { - "type": "string", - "description": "Identifies the version of software of the MEC application." - }, - "appTrafficRule": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/TrafficRuleDescriptor" - }, - "description": "Describes traffic rules the MEC application requires." - }, - "changeAppInstanceStateOpConfig": { - "type": "string", - "description": "NFV" - }, - "mecVersion": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation." - }, - "swImageDescriptor": { - "type": "string", - "description": "Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application." - }, - "terminateAppInstanceOpConfig": { - "type": "string", - "description": "NFV" - }, - "transportDependencies": { - "type": "array", - "items": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/TransportDependency" - }, - "description": "Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2." - }, - "virtualComputeDescriptor": { - "description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize this MEC application.", - "type": "object" - }, - "virtualStorageDescriptor": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Defines descriptors of virtual storage resources to be used by the MEC application." - }, - "userContextTransferCapability": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/UserContextTransferCapability" - }, - "appNetworkPolicy": { - "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/AppNetworkPolicy" - } - } - }, - "AppExternalCpd": { - "title": "AppExternalCpd", - "required": [ - "inherited_attributes" - ], - "type": "object", - "properties": { - "inherited_attributes": { - "type": "object", - "description": "All attributes inherited from Cpd." - }, - "virtualNetworkInterfaceRequirements": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD." - } - } - }, - "AppPkgInfo": { - "title": "AppPkgInfo", - "required": [ - "id", - "appDId", - "appName", - "appSoftwareVersion", - "appDVersion", - "checksum", - "softwareImages", - "onboardingState", - "operationalState", - "usageState", - "mecInfo", - "_links" - ], - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Identifier of the onboarded application package." - }, - "appDId": { - "type": "string", - "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique." - }, - "appProvider": { - "type": "string", - "description": "Provider of the application and of the AppD." - }, - "appName": { - "type": "string", - "description": "Name to identify the MEC application." - }, - "appSoftwareVersion": { - "type": "string", - "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package." - }, - "appDVersion": { - "type": "string", - "description": "Identifies the version of the application descriptor." - }, - "checksum": { - "$ref": "#/components/schemas/Checksum" - }, - "signingCertificate": { - "type": "string", - "description": "The singleton signing certificate if it is included as a file in the AppD archive." - }, - "softwareImages": { - "type": "object", - "description": "Information of application software image in application package. Type is TBD" - }, - "additionalArtifacts": { - "type": "object", - "description": "Additional information of application package artifacts that are not application software images. Type is TBD" - }, - "onboardingState": { - "$ref": "#/components/schemas/OnboardingState" - }, - "operationalState": { - "$ref": "#/components/schemas/AppPkg.OperationalState" - }, - "usageState": { - "$ref": "#/components/schemas/UsageState" - }, - "mecInfo": { - "type": "array", - "description": "The MEC version that compatible with this application. This information is copied from the AppD.", - "items": { - "type": "string" - } - }, - "onBoardingFailureDetails": { - "description": "Failure details of current onboarding procedure", - "$ref": "#/components/schemas/ProblemDetails" - }, - "userDefinedData": { - "$ref": "#/components/schemas/KeyValuePairs", - "description": "'This data 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 8259'" - }, - "_links": { - "$ref": "#/components/schemas/AppPkgInfo.links" - } - }, - "description": "'The data type AppPkgInfo represents the parameters for an application package resource'" - }, - "AppPkgInfoModifications": { - "title": "AppPkgInfoModifications", - "required": [ - "operationState" - ], - "type": "object", - "properties": { - "operationState": { - "$ref": "#/components/schemas/OperationState" - } - }, - "description": "'The data type represents the operational state for an application package resource'" - }, - "AppPkg.OperationalState": { - "title": "AppPkg.OperationalState", - "enum": [ - "ENABLED", - "DISABLED" - ], - "type": "string", - "description": "Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.", - "examples": [ - "ENABLED" - ] - }, - "OnboardingState": { - "title": "OnboardingState", - "enum": [ - "CREATED", - "UPLOADING", - "PROCESSING", - "ONBOARDED" - ], - "type": "string", - "description": "Onboarding state of application package", - "examples": [ - "CREATED" - ] - }, - "UsageState": { - "title": "UsageState", - "enum": [ - "IN_USE", - "NOT_IN_USE" - ], - "type": "string", - "description": "Usage state of the onboarded instance of the application package", - "examples": [ - "IN_USE" - ] - }, - "AppPkgInfo.links": { - "title": "AppPkgInfo.links", - "required": [ - "self", - "appD", - "appPkgContent" - ], - "type": "object", - "properties": { - "self": { - "$ref": "#/components/schemas/LinkType" - }, - "appD": { - "$ref": "#/components/schemas/LinkType" - }, - "appPkgContent": { - "$ref": "#/components/schemas/LinkType" - }, - "vnfPkgInfo": { - "$ref": "#/components/schemas/LinkType" - } - }, - "description": "Links to resources related to this resource." - }, - "AppPkgNotification": { - "title": "AppPkgNotification", - "required": [ - "id", - "notificationType", - "subscriptionId", - "timeStamp", - "appPkgId", - "appDId", - "operationalState", - "_links" - ], - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "''" - }, - "notificationType": { - "$ref": "#/components/schemas/AppPkg.NotificationType" - }, - "subscriptionId": { - "type": "string", - "description": "Identifier of the subscription related to this notification." - }, - "timeStamp": { - "$ref": "#/components/schemas/TimeStamp" - }, - "appPkgId": { - "type": "string", - "description": "Identifier of the onboarded application package." - }, - "appDId": { - "type": "string", - "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique." - }, - "operationalState": { - "$ref": "#/components/schemas/OperationalState" - }, - "_links": { - "$ref": "#/components/schemas/AppPkgNotification.links" - } - }, - "description": "'This data type represents an application package management notification for informing the subscribers about onboarding application package resources. The notification is triggered when a new application package is onboarded'" - }, - "AppPkg.NotificationType": { - "title": "AppPkg.NotificationType", - "enum": [ - "AppPackageOnBoarded", - "AppPacakgeEnabled", - "AppPacakgeDisabled", - "AppPackageDeleted" - ], - "type": "string", - "description": "Discriminator for the different notification types", - "examples": [ - "AppPackageOnBoarded" - ] - }, - "AppPkgNotification.links": { - "title": "AppPkgNotification.links", - "required": [ - "subscription" - ], - "type": "object", - "properties": { - "subscription": { - "$ref": "#/components/schemas/LinkType" - } - }, - "description": "Links to resources related to this resource." - }, - "AppPkgSubscriptionInfo": { - "title": "AppPkgSubscriptionInfo", - "required": [ - "id", - "subscriptionType", - "callbackUri", - "_links" - ], - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Identifier of the subscription to application package notification." - }, - "subscriptionType": { - "description": "Type of subscription.", - "$ref": "#/components/schemas/AppPkgSubscriptionType" - }, - "callbackUri": { - "type": "string", - "description": "The URI of the endpoint for the notification to be sent to." - }, - "_links": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo.links" - } - }, - "description": "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'" - }, - "AppPkgSubscriptionType": { - "title": "AppPkgSubscriptionType", - "enum": [ - "AppPackageOnBoardingSubscription", - "AppPackageChangeSubscription", - "AppPackageDeletionSubscription" - ], - "type": "string", - "description": "type of a subscription.", - "examples": [ - "AppPackageOnBoardingSubscription" - ] - }, - "AppPkgSubscriptionInfo.links": { - "title": "AppPkgSubscriptionInfo.links", - "required": [ - "self" - ], - "type": "object", - "properties": { - "self": { - "$ref": "#/components/schemas/LinkType" - } - }, - "description": "Links to resources related to this resource." - }, - "AppPkgSubscriptionLinkList": { - "title": "AppPkgSubscriptionLinkList", - "required": [ - "_links" - ], - "type": "object", - "properties": { - "_links": { - "$ref": "#/components/schemas/AppPkgSubscriptionLinkList.links" - } - }, - "description": "'The data type represents a subscription link list of notification on application package management'" - }, - "AppPkgSubscriptionLinkList.links": { - "title": "AppPkgSubscriptionLinkList.links", - "required": [ - "self" - ], - "type": "object", - "properties": { - "self": { - "$ref": "#/components/schemas/LinkType" - }, - "subscriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Subscriptions.AppPkgSubscription" - }, - "description": "" - } - }, - "description": "Links to resources related to this resource." - }, - "Subscriptions.AppPkgSubscription": { - "title": "Subscriptions.AppPkgSubscription", - "required": [ - "href", - "subscriptionType" - ], - "type": "object", - "properties": { - "href": { - "type": "string", - "description": "The URI referring to the subscription." - }, - "subscriptionType": { - "$ref": "#/components/schemas/AppPkgSubscriptionType" - } - }, - "description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" - }, - "AppPkgSubscription": { - "title": "AppPkgSubscription", - "required": [ - "callbackUri", - "subscriptionType" - ], - "type": "object", - "properties": { - "callbackUri": { - "type": "string", - "description": "The URI of the endpoint for the notification to be sent to." - }, - "subscriptionType": { - "$ref": "#/components/schemas/AppPkgSubscriptionType" - }, - "appPkgFilter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AppPkgFilter" - }, - "description": "The attribute-based filter is to filter application packages on which the query applies" - } - }, - "description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" - }, - "AppPkgFilter": { - "title": "AppPkgFilter", - "type": "object", - "properties": { - "appPkgInfoId": { - "type": "string", - "description": "Match the application package identifier which is allocated by the MEO. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter." - }, - "appDId": { - "type": "string", - "description": "Match the application descriptor identifier which is allocated by the application provider. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter." - }, - "appProvider": { - "type": "string", - "description": "Match the provider's name of the onboarded application." - }, - "appName": { - "type": "string", - "description": "Match the name of the onboarded application." - }, - "appSoftwareVersion": { - "type": "string", - "description": "Match the software version of the application package." - }, - "appDVersion": { - "type": "string", - "description": "Match the version of the application descriptor." - }, - "operationalState": { - "type": "string", - "description": "Match particular operational state of the application package. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise.", - "enum": [ - "ENABLED", - "DISABLED" - ] - }, - "usageState": { - "type": "string", - "description": "Match particular usage state of the application package. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise.", - "enum": [ - "N_USE", - "NOT_IN_USE" - ] - } - } - }, - "Checksum": { - "title": "Checksum", - "required": [ - "algorithm", - "hash" - ], - "type": "object", - "properties": { - "algorithm": { - "type": "string", - "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512." - }, - "hash": { - "type": "string", - "description": "'String 1 The hexadecimal value of the checksum'" - } - } - }, - "CreateAppPkg": { - "title": "CreateAppPkg", - "required": [ - "appPkgName", - "appPkgPath", - "appPkgVersion", - "checksum" - ], - "type": "object", - "properties": { - "appPkgName": { - "type": "string", - "description": "Name of the application package to be onboarded." - }, - "appPkgPath": { - "type": "string", - "format": "uri" - }, - "appPkgVersion": { - "type": "string", - "description": "Version of the application package to be onboarded.The appPkgName with appPkgVersion can be used to uniquely identify the application package." - }, - "appProvider": { - "type": "string", - "description": "The provider's name of the application package to be onboarded." - }, - "checksum": { - "$ref": "#/components/schemas/Checksum" - }, - "userDefinedData": { - "$ref": "#/components/schemas/KeyValuePairs", - "description": "'This data 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 8259'" - } - } - }, - "KeyValuePairs": { - "type": "object", - "additionalProperties": { - "type": "object" - } - }, - "LinkType": { - "title": "LinkType", - "required": [ - "href" - ], - "type": "object", - "properties": { - "href": { - "type": "string", - "description": "URI referring to a resource" - } - } - }, - "ProblemDetails": { - "title": "ProblemDetails", - "type": "object", - "properties": { - "detail": { - "type": "string", - "description": "A human-readable explanation specific to this occurrence of the problem" - }, - "instance": { - "type": "string", - "description": "A URI reference that identifies the specific occurrence of the problem" - }, - "status": { - "type": "integer", - "description": "The HTTP status code for this occurrence of the problem", - "contentEncoding": "int32" - }, - "title": { - "type": "string", - "description": "A short, human-readable summary of the problem type" - }, - "type": { - "type": "string", - "description": "A URI reference according to IETF RFC 3986 that identifies the problem type" - } - } - }, - "TimeStamp": { - "title": "TimeStamp", - "required": [ - "nanoSeconds", - "seconds" - ], - "type": "object", - "properties": { - "nanoSeconds": { - "type": "integer", - "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", - "contentEncoding": "int32" - }, - "seconds": { - "type": "integer", - "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", - "contentEncoding": "int32" - } - } - }, - "OperationalState": { - "title": "OperationalState", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string", - "examples": [ - "DISABLED" - ] - }, - "OperationState": { - "title": "OperationState", - "enum": [ - "DISABLED", - "ENABLED" - ], - "type": "string", - "examples": [ - "DISABLED" - ] - } - } - }, - "security": [ - {} - ] + "openapi": "3.1.0", + "info": { + "title": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management", + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.", + "license": { + "name": "BSD-3-Clause", + "url": "https://forge.etsi.org/legal-matters" + }, + "contact": { + "name": "ETSI Forge", + "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", + "email": "cti_support@etsi.org" + }, + "version": "3.1.1" + }, + "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", + "externalDocs": { + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.1.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf" + }, + "tags": [{ + "name": "app-pkgm", + "description": "App Package management" + }, + { + "name": "app-pkgm-notifications", + "description": "App Package management notifications" + } + ], + "servers": [{ + "url": "https://localhost/app_pkgm/v1", + "variables": {} + }], + "paths": { + "/app_packages": { + "post": { + "tags": [ + "app-pkgm" + ], + "summary": "Create a resource for on-boarding an application package to a MEO/MEAO", + "description": "Create a resource for on-boarding an application package to a MEO/MEAO", + "operationId": "app_packagesPOST", + "parameters": [], + "requestBody": { + "description": "Resource to be created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAppPkg" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful response for resource creation", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgInfo", + "description": "The response body shall contain a representation of the application package resource" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Queries information relating to on-boarded application packages in the MEO/MEAO'", + "description": "queries information relating to on-boarded application packages in the MEO/MEAO", + "operationId": "app_packagesGET", + "parameters": [{ + "name": "filter", + "in": "query", + "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "all_fields", + "in": "query", + "description": "Include all complex attributes in the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be included into the response", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_default", + "in": "query", + "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Contains a representation of the application package resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppPkgInfo" + }, + "description": "Indicate the success of request. The response message content shall contain a list of representations of the \"individual application package\" resources that match the attribute filter" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/onboarded_app_packages": { + "post": { + "tags": [ + "app-pkgm" + ], + "summary": "Create a resource for on-boarding an application package to a MEO/MEAO", + "description": "Create a resource for on-boarding an application package to a MEO/MEAO", + "operationId": "onboarded_app_packagesPOST", + "parameters": [], + "requestBody": { + "description": "Resource to be created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAppPkg" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful response for resource creation", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgInfo", + "description": "The response body shall contain a representation of the application package resource" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Queries information relating to on-boarded application packages in the MEO/MEAO'", + "description": "queries information relating to on-boarded application packages in the MEO/MEAO", + "operationId": "onboarded_app_packagesGET", + "parameters": [{ + "name": "filter", + "in": "query", + "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "all_fields", + "in": "query", + "description": "Include all complex attributes in the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be included into the response", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_default", + "in": "query", + "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Contains a representation of the application package resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppPkgInfo" + }, + "description": "Indicate the success of request. The response body message content shall contain a list of representations of the \"individual application package\" resources that match the attribute filter." + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/app_packages/{appPkgId}": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Queries the information related to individual application package resources", + "description": "Queries the information related to individual application package resources", + "operationId": "app_packageGET", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "200": { + "description": "Contains a representation of the application package resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AppPkgInfo" + }, + "description": "Indicates the success of request. The response message content shall contain a representation of the resource" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "app-pkgm" + ], + "summary": "Deletes an individual application package resources in MEO/MEAO", + "description": "Deletes an individual application package resources in MEO/MEAO", + "operationId": "app_packageDELETE", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "204": { + "description": "No Content", + "headers": {}, + "content": {} + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "patch": { + "tags": [ + "app-pkgm" + ], + "summary": "Updates the operational state of an individual application package resource", + "description": "Updates the operational state of an individual application package resources", + "operationId": "app_packagePATCH", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "requestBody": { + "description": "Parameters for application package information modification.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Shows that the operation has been completed successfully", + "headers": {}, + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + }, + "description": "Shall be returned when the operation has been completed successfully." + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/onboarded_app_packages/{appPkgId}": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Queries the information related to individual application package resources", + "description": "Queries the information related to individual application package resources", + "operationId": "onboarded_app_packageGET", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "200": { + "description": "Contains a representation of the application package resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AppPkgInfo" + }, + "description": "Indicates the success of request. The response message content shall contain arepresentation of the resource." + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "app-pkgm" + ], + "summary": "Deletes an individual application package resources in MEO/MEAO", + "description": "Deletes an individual application package resources in MEO/MEAO", + "operationId": "onboarded_app_packageDELETE", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "204": { + "description": "No Content", + "headers": {}, + "content": {} + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "patch": { + "tags": [ + "app-pkgm" + ], + "summary": "Updates the operational state of an individual application package resource", + "description": "Updates the operational state of an individual application package resources", + "operationId": "onboarded_app_packagePATCH", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "requestBody": { + "description": "Parameters for application package information modification.", + "content": { + "application/json": { + "schema": { + "items": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + }, + "description": "Shall be returned when the operation has been completed successfully." + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Shows that the operation has been completed successfully", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/subscriptions": { + "post": { + "tags": [ + "app-pkgm" + ], + "summary": "Subscribe to notifications about on-boarding an application package", + "description": "Subscribe to notifications about on-boarding an application package", + "operationId": "subscriptionsPOST", + "parameters": [], + "requestBody": { + "description": "The input parameters of subscribe operation to notifications", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscription" + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful response for created subscription", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscriptionInfo", + "description": "Upon success, a response message contentrepresenting the created subscription shall bereturned." + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "callbacks": { + "notification": { + "{$request.body#/subscription.href}": { + "post": { + "summary": "Callback POST used to send a notification", + "description": " The notification is triggered when a new application package is onboarded", + "operationId": "notificationPOST", + "requestBody": { + "description": "Subscription notification", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgNotification" + } + } + } + }, + "responses": { + "204": { + "description": "No content" + }, + "404": { + "description": "Not found" + } + } + } + } + } + } + }, + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO", + "description": "used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO package", + "operationId": "subscriptionsGET", + "parameters": [], + "responses": { + "200": { + "description": "List of zero or more subscriptions", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscriptionLinkList", + "description": "Upon success, a response message content containing a list of zero or more subscriptions shallbe returned." + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/subscriptions/{subscriptionId}": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Used to represent an individual subscription to notifications about application package changes.", + "description": "Used to represent an individual subscription to notifications about application package changes.", + "operationId": "individualSubscriptionGET", + "parameters": [{ + "name": "subscriptionId", + "in": "path", + "description": "Identifier of an individual subscription to notifications about application package changes", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "200": { + "description": "a response body containing a representation of the resource shall be returned.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscriptionInfo", + "description": "Upon success, a response message content containing a representation of the resource shall be returned." + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "delete": { + "tags": [ + "app-pkgm" + ], + "summary": "Deletes the individual subscription to notifications about application package changes in MEO or MEAO.", + "description": "Deletes the individual subscription to notifications about application package changes in MEO or MEAO.", + "operationId": "individualSubscriptionDELETE", + "parameters": [{ + "name": "subscriptionId", + "in": "path", + "description": "Identifier of an individual subscription to notifications about application package changes", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "204": { + "description": "No Content", + "headers": {}, + "content": {} + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/app_packages/{appPkgId}/appd": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Reads the content of the AppD of on-boarded individual application package resources.", + "description": "Reads the content of the AppD of on-boarded individual application package resources.", + "operationId": "appPkgIdGET", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an on-boarded individual application package", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "all_fields", + "in": "query", + "description": "Include all complex attributes in the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be included into the response", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_default", + "in": "query", + "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Content of the AppD is returned.", + "headers": {}, + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AppD", + "description": "Indicates the success of request, and the content of the AppD is returned.The response message content shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.The \"Content-Type\" HTTP header shall be set according to the format of the returned file, which is selected according to \"Accept\" HTTP header options passed in the request." + } + }, + "application/zip": {} + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/onboarded_app_packages/{appDId}/appd": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Reads the content of the AppD of on-boarded individual application package resources.", + "description": "Reads the content of the AppD of on-boarded individual application package resources.", + "operationId": "appDGET", + "parameters": [{ + "name": "appDId", + "in": "path", + "description": "Identifier of an application descriptor", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "all_fields", + "in": "query", + "description": "Include all complex attributes in the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be included into the response", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_default", + "in": "query", + "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Content of the AppD is returned.", + "headers": {}, + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AppD", + "description": "Indicates the success of request, and the content of the AppD is returned.The response message content shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.The \"Content-Type\" HTTP header shall be set according to the format of the returned file, which is selected according to \"Accept\" HTTP header options passed in the request." + } + }, + "application/zip": {} + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/app_packages/{appPkgId}/package_content": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "description": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "operationId": "appPkgGET", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an on-boarded individual application package", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "200": { + "description": "The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.", + "headers": {}, + "content": { + "application/zip": {} + } + }, + "206": { + "description": "On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned.", + "headers": {}, + "content": { + "application/zip": {} + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "app-pkgm" + ], + "summary": "Uploads the content of application package.", + "description": "Uploads the content of application package.", + "operationId": "appPkgPUT", + "parameters": [{ + "name": "appPkgId", + "in": "path", + "description": "Identifier of an on-boarded individual application package", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "202": { + "description": "The application package has been accepted for uploading, but the processing has not been completed.", + "headers": {}, + "content": {} + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/onboarded_app_packages/{appDId}/package_content": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "description": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "operationId": "appDIdGET", + "parameters": [{ + "name": "appDId", + "in": "path", + "description": "Identifier of an application descriptor", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "200": { + "description": "The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.", + "headers": {}, + "content": {} + }, + "206": { + "description": "On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned.", + "headers": {}, + "content": {} + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "app-pkgm" + ], + "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "description": "Uploads the content of application package.", + "operationId": "appDIdPUT", + "parameters": [{ + "name": "appDId", + "in": "path", + "description": "Identifier of an application descriptor", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }], + "responses": { + "202": { + "description": "The application package has been accepted for uploading, but the processing has not been completed.", + "headers": {}, + "content": {} + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/user_defined_notification": { + "post": { + "tags": [ + "app-pkgm-notifications" + ], + "summary": "Registers a notification endpoint to notify application package operations", + "description": "Registers a notification endpoint to notify application package operations", + "operationId": "app_pkg_notificationPOST", + "parameters": [], + "requestBody": { + "description": "Notification endpoint to be created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgNotification" + } + } + }, + "required": true + }, + "responses": { + "204": { + "description": "No Content", + "headers": {}, + "content": {} + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "406": { + "$ref": "#/components/responses/406" + }, + "429": { + "$ref": "#/components/responses/429" + } + }, + "deprecated": false + }, + "parameters": [] + } + }, + "components": { + "schemas": { + "AppD": { + "title": "AppD", + "required": [ + "appDId", + "appDVersion", + "appDescription", + "appName", + "appProvider", + "appSoftVersion", + "mecVersion", + "swImageDescriptor", + "appExtCpd" + ], + "type": "object", + "properties": { + "appDId": { + "type": "string", + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1." + }, + "appDNSRule": { + "type": "array", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/DNSRuleDescriptor" + }, + "description": "Describes DNS rules the MEC application requires." + }, + "logicalNode": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogicalNodeRequirements" + }, + "description": "The logical node requirements. See note 6 and note 7." + }, + "requestAdditionalCapabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestedAdditionalCapabilityData" + }, + "description": "Specifies requirements for additional capabilities. These can be for a range of purposes. One example is acceleration related capabilities. See note 6 and note 7." + }, + "mcioConstraintParams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/McioConstraintParams" + }, + "description": "The parameter names for constraints expected to be assigned to MCIOs realizing this application. For the associated semantical context of the values, refer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1]. See note 7." + }, + "appDVersion": { + "type": "string", + "description": "Identifies the version of the application descriptor." + }, + "appDescription": { + "type": "string", + "description": "Human readable description of the MEC application." + }, + "appExtCpd": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppExternalCpd" + }, + "description": "Describes external interface(s) exposed by this MEC application. See note 4." + }, + "appFeatureOptional": { + "type": "array", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency" + }, + "description": "Describes features a MEC application may use if available." + }, + "appFeatureRequired": { + "type": "array", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency" + }, + "description": "Describes features a MEC application requires to run." + }, + "appInfoName": { + "type": "string", + "description": "Human readable name for the MEC application." + }, + "appLatency": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/LatencyDescriptor" + }, + "appName": { + "type": "string", + "description": "Name to identify the MEC application." + }, + "appProvider": { + "type": "string", + "description": "Provider of the application and of the AppD." + }, + "appServiceOptional": { + "type": "array", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency" + }, + "description": "Describes services a MEC application may use if available." + }, + "appServiceProduced": { + "type": "array", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDescriptor" + }, + "description": "Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps." + }, + "appServiceRequired": { + "type": "array", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency" + }, + "description": "Describes services a MEC application requires to run." + }, + "appSoftVersion": { + "type": "string", + "description": "Identifies the version of software of the MEC application." + }, + "mciopId": { + "type": "string", + "description": "Identifies the MCIOP in the application package, used in containerized workload management, when the application is realized by a set of OS containers. See note 7." + }, + "mcioIdentificationData": { + "type": "string", + "description": "Name and type of the Managed Container Infrastructure Object (MCIO) that realizes this application. It allows the VNFM to identify the MCIO e.g. when querying the Container Infrastructure Service Management (CISM). See note 7.", + "items": { + "$ref": "#/components/schemas/McioIdentificationData" + } + }, + "appTrafficRule": { + "type": "array", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/TrafficRuleDescriptor" + }, + "description": "Describes traffic rules the MEC application requires." + }, + "changeAppInstanceStateOpConfig": { + "type": "string", + "$ref": "#/components/schemas/changeAppInstanceStateOpConfig" + }, + "mecVersion": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation." + }, + "virtualStorageDescriptor": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualStorageDescriptor" + }, + "description": "Defines descriptors of virtual storage resources to be used by the MEC application." + }, + "userContextTransferCapability": { + "type": "string", + "$ref": "#/components/schemas/UserContextTransferCapability" + }, + "appNetworkPolicy": { + "type": "string", + "$ref": "#/components/schemas/AppNetworkPolicy" + }, + "swImageDescriptor": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SwImageDescriptor" + }, + "description": "Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. See note 5." + }, + "terminateAppInstanceOpConfig": { + "type": "string", + "$ref": "#/components/schemas/TerminateAppInstanceOpConfig" + }, + "transportDependencies": { + "type": "object", + "items": { + "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/TransportDependency" + }, + "description": "Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2." + }, + "virtualComputeDescriptor": { + "description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM used to realize this MEC application. See note 5.", + "type": "object", + "items": { + "$ref": "#/components/schemas/VirtualComputeDescriptor" + } + }, + "osContainerDescriptor": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OsContainerDescriptor" + }, + "description": "Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the same host and same network namespace. See note 5 and note 7." + } + }, + "description": "NOTE 1: The appDId shall be used as the unique identifier of the application package that contains this AppD.\nNOTE 2: This attribute indicates groups of transport bindings which a service-producing MEC application requires to \n be supported by the platform in order to be able to produce its services. At least one of the indicated groups \n needs to be supported to fulfil the requirements.\nNOTE 3: The support of application descriptor containing descriptions of multiple virtualisation containers and/or \n application software images is out of scope of the present document.\nNOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC \n platform and OSS.\nNOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor \n presents, only a single swImageDescriptor shall be provided. \nNOTE 6: If the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be \n present.\nNOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. \n" + }, + "changeAppInstanceStateOpConfig": { + "type": "object", + "description": "This information element defines attributes that affect the invocation of the OperateVnf operation.\n", + "required": [ + "minGracefulStopTimeout" + ], + "properties": { + "minGracefulStopTimeout": { + "type": "number", + "description": "Minimum timeout value for graceful stop of a VNF instance." + }, + "maxRecommendedGracefulStopTimeout": { + "type": "number", + "description": "Maximum recommended timeout value that can be needed to gracefully stop a VNF instance of a particular type under certain conditions, such as maximum load condition. This is provided by VNF provider as information for the operator facilitating the selection of optimal timeout value. This value is not used as constraint. \n" + }, + "parameter": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of KVP requirements for VNF-specific parameters to be passed when invoking the OperateVnf operation. See note.\n" + } + } + }, + "AppNetworkPolicy": { + "type": "object", + "properties": { + "steeredNetwork": { + "type": "object", + "properties": { + "cellularNetwork": { + "type": "boolean", + "description": "If present and the application prefers to use a cellular network, set to true. Otherwise, set to false." + }, + "wi-fiNetwork": { + "type": "boolean", + "description": "If present and the application prefers to use a Wi-Fi network, set to true. Otherwise, set to false." + }, + "fixedAccessNetwork": { + "type": "boolean", + "description": "If present and the application prefers to use a fixed access network, set to true. Otherwise, set to false." + } + }, + "description": "Option for the application to specify a type of network to carry its traffic." + } + }, + "required": [ + "steeredNetwork" + ], + "description": "Network policy in the application instantiation and operation." + }, + "UserContextTransferCapability": { + "type": "object", + "properties": { + "statefulApplication": { + "type": "boolean", + "description": "If the application is stateful, this attribute shall be set to true. Otherwise, set to false." + }, + "userContextTransferSupport": { + "type": "boolean", + "description": "This attribute shall be present if the application is stateful and absent otherwise. If the application supports user context transfer, set to true. Otherwise, set to false." + } + }, + "required": [ + "statefulApplication" + ], + "description": "Information about user context transfer capability of the application." + }, + "VirtualStorageDescriptor": { + "type": "object", + "description": "Defines descriptors of virtual storage resources to be used by the MEC application.", + "required": [ + "id", + "typeOfStorage" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique identifier of this VirtualStorageDesc in the VNFD." + }, + "typeOfStorage": { + "type": "string", + "enum": [ + "BLOCK", + "OBJECT", + "FILE" + ], + "description": "Type of virtualized storage resource." + }, + "blockStorageData": { + "$ref": "#/components/schemas/BlockStorageData", + "description": "Details of block storage. Required when typeOfStorage is set to \"BLOCK\"." + }, + "objectStorageData": { + "$ref": "#/components/schemas/ObjectStorageData", + "description": "Details of object storage. Required when typeOfStorage is set to \"OBJECT\"." + }, + "fileStorageData": { + "$ref": "#/components/schemas/FileStorageData", + "description": "Details of file storage. Required when typeOfStorage is set to \"FILE\"." + }, + "nfviMaintenanceInfo": { + "$ref": "#/components/schemas/NfviMaintenanceInfo", + "description": "Information on NFVI operation and maintenance rules for instances based on this VirtualStorageDesc." + }, + "perVnfcInstance": { + "type": "boolean", + "description": "Indicates whether the virtual storage resource should be instantiated per VNFC instance." + } + } + }, + "NfviMaintenanceInfo": { + "type": "object", + "properties": { + "impactNotificationLeadTime": { + "type": "number", + "description": "The minimum notification lead time requested for upcoming impact of the virtualised resource or their group." + }, + "isImpactMitigationRequested": { + "type": "boolean", + "description": "Indicates if it is requested to provide virtualised resource(s) of the same characteristics as the impacted ones to compensate for the impact." + }, + "supportedMigrationType": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "NO_MIGRATION", + "OFFLINE_MIGRATION", + "LIVE_MIGRATION" + ] + }, + "description": "Specifies the allowed migration types in order of preference in case of an impact." + }, + "maxUndetectableInterruptionTime": { + "type": "number", + "description": "Specifies the maximum interruption time that can go undetected at the VNF level during live migration." + }, + "minRecoveryTimeBetweenImpacts": { + "type": "number", + "description": "Specifies the time required by the group to recover from an impact, indicating the minimum time between consecutive impacts of the group." + }, + "maxNumberOfImpactedInstances": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MaxNumberOfImpactedInstances" + }, + "description": "Specifies the maximum number of instances that can be impacted simultaneously within the group of virtualised resources for different group sizes." + }, + "minNumberOfPreservedInstances": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MinNumberOfPreservedInstances" + }, + "description": "Specifies the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources for different group sizes." + } + } + }, + "MaxNumberOfImpactedInstances": { + "type": "object", + "properties": { + "groupSize": { + "type": "integer", + "description": "Determines the size of the group for which the maxNumberOfImpactedInstances is specified." + }, + "maxNumberOfImpactedInstances": { + "type": "integer", + "description": "The maximum number of instances that can be impacted simultaneously within the group of the specified size." + } + } + }, + "MinNumberOfPreservedInstances": { + "type": "object", + "properties": { + "groupSize": { + "type": "integer", + "description": "Determines the size of the group for which the minNumberOfPreservedInstances is specified." + }, + "minNumberOfPreservedInstances": { + "type": "integer", + "description": "The minimum number of instances which need to be preserved simultaneously within the group of the specified size." + } + } + }, + "ObjectStorageData": { + "type": "object", + "properties": { + "maxSizeOfStorage": { + "type": "number", + "description": "Maximum size of virtualized storage resource in GB." + } + } + }, + "FileStorageData": { + "type": "object", + "properties": { + "sizeOfStorage": { + "type": "number", + "description": "Size of virtualized storage resource in GB." + }, + "fileSystemProtocol": { + "type": "string", + "description": "The shared file system protocol (e.g. NFS, CIFS)." + }, + "intVirtualLinkDesc": { + "$ref": "#/components/schemas/VnfVirtualLinkDesc", + "description": "Reference of the internal VLD which this file storage connects to." + } + } + }, + "VirtualLinkDescFlavour": { + "type": "object", + "properties": { + "flavourId": { + "type": "string", + "description": "Identifies a flavour within a VnfVirtualLinkDesc." + }, + "qos": { + "$ref": "#/components/schemas/QoS", + "description": "QoS of the VL." + } + }, + "required": [ + "flavourId" + ] + }, + "QoS": { + "type": "object", + "properties": { + "latency": { + "type": "number", + "description": "Specifies the maximum latency in ms." + }, + "packetDelayVariation": { + "type": "number", + "description": "Specifies the maximum jitter in ms." + }, + "packetLossRatio": { + "type": "number", + "description": "Specifies the maximum packet loss ratio." + } + }, + "required": [ + "latency", + "packetDelayVariation" + ] + }, + "ConnectivityType": { + "type": "object", + "properties": { + "layerProtocol": { + "type": "array", + "description": "Specifies the protocols that the VL uses.", + "items": { + "type": "string", + "enum": [ + "Ethernet", + "MPLS", + "ODU2", + "IPV4", + "IPV6", + "Pseudo-Wire", + "Etc" + ] + }, + "minItems": 1 + }, + "flowPattern": { + "type": "string", + "description": "Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.)." + } + }, + "required": [ + "layerProtocol" + ] + }, + "VnfVirtualLinkDesc": { + "type": "object", + "properties": { + "virtualLinkDescId": { + "type": "string", + "description": "Unique identifier of this internal VLD in VNFD." + }, + "virtualLinkDescFlavour": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualLinkDescFlavour" + }, + "description": "Describes a specific flavour of the VL with specific bitrate requirements." + }, + "connectivityType": { + "$ref": "#/components/schemas/ConnectivityType", + "description": "See clause 7.1.7.3." + }, + "testAccess": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specifies test access facilities expected on the VL." + }, + "description": { + "type": "string", + "description": "Provides human-readable information on the purpose of the VL." + }, + "monitoringParameter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MonitoringParameter" + }, + "description": "Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM." + }, + "nfviMaintenanceInfo": { + "$ref": "#/components/schemas/NfviMaintenanceInfo", + "description": "Provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance." + }, + "externallyManaged": { + "type": "string", + "enum": [ + "REQUIRED", + "ALLOWED" + ], + "default": "ALLOWED", + "description": "Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed." + } + } + }, + "TerminateAppInstanceOpConfig": { + "type": "object", + "description": "This information element defines attributes that affect the invocation of the TerminateVnf operation.\n", + "required": [ + "minGracefulTerminationTimeout" + ], + "properties": { + "minGracefulTerminationTimeout": { + "type": "number", + "description": "Minimum timeout value for graceful stop of a VNF instance." + }, + "maxRecommendedGracefulTerminationTimeout": { + "type": "number", + "description": "Maximum recommended timeout value that can be needed to gracefully terminate a VNF instance of a particular type under certain conditions, such as maximum load condition. This is provided by VNF provider as information for the operator facilitating the selection of optimal timeout value. This value is not used as constraint. \n" + }, + "parameter": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of KVP requirements for VNF-specific parameters to be passed when invoking the TerminateVnf operation. See note. \n" + } + } + }, + "SwImageDescriptor": { + "type": "object", + "required": [ + "id", + "name", + "version", + "containerFormat", + "swImage" + ], + "properties": { + "id": { + "type": "string", + "description": "The identifier of this software image." + }, + "name": { + "type": "string", + "description": "The name of this software image." + }, + "version": { + "type": "string", + "items": { + "$ref": "#/components/schemas/Version" + }, + "description": "The version of this software image." + }, + "checksum": { + "$ref": "#/components/schemas/ChecksumData", + "description": "The checksum of the software image file. See note 3." + }, + "containerFormat": { + "type": "string", + "description": "The container format describes the container file format in which software image is provided." + }, + "diskFormat": { + "type": "string", + "description": "The disk format of a software image is the format of the underlying disk image. See note 1." + }, + "minDisk": { + "type": "number", + "description": "The minimal disk size requirement for this software image. See note 1." + }, + "minRam": { + "type": "number", + "description": "The minimal RAM requirement for this software image. See note 2." + }, + "size": { + "type": "number", + "description": "The size of this software image file. See note 3." + }, + "swImage": { + "type": "object", + "items": { + "$ref": "#/components/schemas/SwImageDesc" + }, + "description": "A reference to the actual software image." + }, + "operatingSystem": { + "type": "string", + "description": "Specifies the operating system used in the software image." + }, + "supportedVirtualisationEnvironment": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image." + } + }, + "description": "NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. \n" + }, + "Version": { + "type": "object", + "required": [ + "srcVnfdId", + "dstVnfdId", + "srcFlavourId" + ], + "properties": { + "srcVnfdId": { + "type": "string", + "description": "Identifier of the source VNFD and the source VNF package. See note 1." + }, + "dstVnfdId": { + "type": "string", + "description": "Identifier of the destination VNFD and the destination VNF package. See note 1." + }, + "srcFlavourId": { + "type": "string", + "description": "Identifier of the deployment flavour in the source VNF package for which this modification applies. See note 2." + } + }, + "description": "NOTE 1: Either the srcVnfdId or the dstVnfdId shall be equal to the vnfdId of the VNFD containing this version selector. \nNOTE 2: It is up to protocol design stage to decide whether there is further optimization potential to apply one modification for multiple srcFlavourIds.\n" + }, + "McioConstraintParams": { + "title": "McioConstraintParams", + "enum": [ + "localAffinityCisNode", + "nodeAdditionalCapabilitySsd", + "nodeAdditionalCapabilityDpdk", + "nodeAdditionalCapabilitySriov", + "nodeAdditionalCapabilityGpu", + "nodeAdditionalCapabilityFpga", + "nodeAdditionalCapabilityCpuPin", + "nodeCapabilityLogicalNuma", + "nodePool" + ], + "type": "string", + "description": "The parameter names for constraints expected to be assigned to MCIOs realizing this application.The value specifies the standardized \nsemantical context of the MCIO constraints and the parameter names for the MCIO constraints in the MCIO declarative descriptor.The mcioConstraintParams\nattribute shall have one of the following values, expressing the associated semantical context.. For the associated semantical context of the values,\nrefer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1].\n" + }, + "McioIdentificationData": { + "type": "object", + "required": [ + "name", + "type" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the mcio. See note 1." + }, + "type": { + "type": "string", + "description": "The type of the mcio. See note 2." + } + }, + "description": "NOTE 1: When the container infrastructure service is a Kubernetes® instance it is the value of the 'metadata.name' \n field in Kubernetes® manifest. \nNOTE 2: When the container infrastructure service is a Kubernetes® instance it is the value of the 'kind' field in \n Kubernetes® manifest. \n" + }, + "OsContainerDescriptor": { + "title": "OsContainerDescriptor", + "type": "object", + "required": [ + "osContainerDescId", + "name", + "description", + "swImageDesc" + ], + "properties": { + "osContainerDescId": { + "type": "string", + "description": "Unique identifier of this OsContainerDesc in the VNFD." + }, + "name": { + "type": "string", + "description": "Human readable name of this OS container." + }, + "description": { + "type": "string", + "description": "Human readable description of this OS container." + }, + "requestedCpuResources": { + "type": "integer", + "description": "Number of CPU resources requested for the container (e.g. in milli-CPU-s)." + }, + "requestedMemoryResources": { + "type": "number", + "description": "Amount of memory resources requested for the container (e.g. in MB)." + }, + "requestedEphemeralStorageResources": { + "type": "number", + "description": "Size of ephemeral storage resources requested for the container (e.g. in GB)." + }, + "extendedResourceRequests": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "An array of key-value pairs of extended resources required by the container see note." + }, + "additionalProperties": { + "type": "string", + "description": "See note." + }, + "cpuResourceLimit": { + "type": "integer", + "description": "Number of CPU resources the container can maximally use (e.g. in milli-CPU)." + }, + "memoryResourceLimit": { + "type": "number", + "description": "Amount of memory resources the container can maximally use (e.g. in MB)." + }, + "ephemeralStorageResourceLimit": { + "type": "number", + "description": "Size of ephemeral storage resources the container can maximally use (e.g. in GB)." + }, + "hugePageResources": { + "type": "object", + "description": "Specifies HugePages resources requested for the container, which the container can maximally use.", + "additionalProperties": { + "type": "string" + } + }, + "cpuPinningRequirements": { + "$ref": "#/components/schemas/VirtualCpuPinningData", + "description": "Requirements for CPU pinning configuration for this OS container." + }, + "swImageDesc": { + "$ref": "#/components/schemas/SwImageDesc", + "description": "Describes the software image realizing this OS container." + }, + "bootData": { + "type": "string", + "description": "Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent." + }, + "monitoringParameters": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MonitoringParameter" + }, + "description": "Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM." + } + }, + "description": "NOTE: Extended resources are to describe any type of resource provided by the container infrastructure. One \n example implementation of extended resources is \"Extended Resources\" in case the container infrastructure \n service is a Kubernetes® instance. \n" + }, + "MonitoringParameter": { + "type": "object", + "required": [ + "monitoringParameterId", + "performanceMetric" + ], + "properties": { + "monitoringParameterId": { + "type": "string", + "description": "Unique identifier of the monitoring parameter." + }, + "name": { + "type": "string", + "description": "Human readable name of the monitoring parameter." + }, + "performanceMetric": { + "type": "string", + "description": "Specifies the virtualised resource performance metric." + }, + "collectionPeriod": { + "type": "string", + "description": "An attribute that describes the periodicity at which to collect the performance information." + } + } + }, + "VirtualComputeDescriptor": { + "title": "VirtualComputeDescriptor", + "type": "object", + "required": [ + "virtualComputeDescId", + "virtualMemory", + "virtualCpu" + ], + "properties": { + "virtualComputeDescId": { + "type": "string", + "description": "Unique identifier of this VirtualComputeDesc in the VNFD." + }, + "logicalNode": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LogicalNodeRequirements" + } + }, + "requestAdditionalCapabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RequestedAdditionalCapabilityData" + } + }, + "computeRequirements": { + "description": "Specifies compute requirements.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "virtualMemory": { + "$ref": "#/components/schemas/VirtualMemoryData" + }, + "virtualCpu": { + "$ref": "#/components/schemas/VirtualCpuData" + }, + "virtualDisk": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlockStorageData" + } + } + } + }, + "VirtualCpuData": { + "type": "object", + "required": [ + "numVirtualCpu" + ], + "properties": { + "cpuArchitecture": { + "type": "string", + "description": "CPU architecture type. Examples are x86, ARM." + }, + "numVirtualCpu": { + "type": "integer", + "description": "Number of virtual CPUs." + }, + "virtualCpuClock": { + "type": "number", + "description": "Minimum virtual CPU clock rate (e.g. in MHz)." + }, + "virtualCpuOversubscriptionPolicy": { + "type": "string", + "description": "The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads." + }, + "vduCpuRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "Array of key-value pair requirements on the Compute (CPU) for the VDU." + }, + "virtualCpuPinning": { + "$ref": "#/components/schemas/VirtualCpuPinningData" + } + } + }, + "BlockStorageData": { + "type": "object", + "required": [ + "sizeOfStorage" + ], + "properties": { + "sizeOfStorage": { + "type": "number", + "description": "Size of virtualised storage resource in GB." + }, + "vduStorageRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "An array of key-value pairs that articulate the storage deployment requirements." + }, + "rdmaEnabled": { + "type": "boolean", + "description": "Indicate if the storage support RDMA." + }, + "swImageDesc": { + "$ref": "#/components/schemas/SwImageDesc", + "description": "References the software image to be loaded on the VirtualStorage resource created based on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note." + } + }, + "description": "NOTE: This attribute shall not be present in a VirtualStorageDesc used in a VDU realized by one or a set of OS containers\n" + }, + "SwImageDesc": { + "type": "object", + "required": [ + "id", + "name", + "version", + "containerFormat", + "swImage" + ], + "properties": { + "id": { + "type": "string", + "description": "The identifier of this software image." + }, + "name": { + "type": "string", + "description": "The name of this software image." + }, + "version": { + "type": "string", + "description": "The version of this software image." + }, + "checksum": { + "$ref": "#/components/schemas/ChecksumData", + "description": "The checksum of the software image file. See note 3" + }, + "containerFormat": { + "type": "string", + "description": "The container format describes the container file format in which software image is provided." + }, + "diskFormat": { + "type": "string", + "description": "The disk format of a software image is the format of the underlying disk image. See note 1" + }, + "minDisk": { + "type": "number", + "description": "The minimal disk size requirement for this software image. The value of the \"size of storage\" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1" + }, + "minRam": { + "type": "number", + "description": "The minimal RAM requirement for this software image. The value of the \"size\" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2" + }, + "size": { + "type": "number", + "description": "The size of this software image file. See note 3" + }, + "swImage": { + "$ref": "#/components/schemas/SwImageDesc", + "description": "This is a reference to the actual software image. The reference can be relative to the root of the VNF Package or can be a URL." + }, + "operatingSystem": { + "type": "string", + "description": "Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used." + }, + "supportedVirtualisationEnvironment": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image." + } + }, + "description": "NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. \nNOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. \n" + }, + "ChecksumData": { + "type": "object", + "required": [ + "algorithm", + "hash" + ], + "properties": { + "algorithm": { + "type": "string", + "description": "Specifies the algorithm used to obtain the checksum value see note." + }, + "hash": { + "type": "string", + "description": "Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers." + } + }, + "description": "NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. \n" + }, + "VirtualCpuPinningData": { + "type": "object", + "properties": { + "virtualCpuPinningPolicy": { + "type": "string", + "description": "Indicates the policy for CPU pinning.", + "enum": [ + "STATIC", + "DYNAMIC" + ] + }, + "virtualCpuPinningRule": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of \"STATIC\" virtualCpuPinningPolicy." + } + } + }, + "VirtualMemoryData": { + "type": "object", + "required": [ + "virtualMemSize" + ], + "properties": { + "virtualMemSize": { + "type": "number", + "description": "Amount of virtual memory in MB." + }, + "virtualMemOversubscriptionPolicy": { + "type": "string", + "description": "The memory core oversubscription policy in terms of virtual memory to physical memory\non the platform. The cardinality can be 0 during the allocation request, if no particular\nvalue is requested.\n" + }, + "vduMemRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + }, + "description": "Array of key-value pair requirements on the memory for the VDU." + }, + "numaEnabled": { + "type": "boolean", + "description": "Specifies the memory allocation to be cognisant of the relevant process/core allocation." + }, + "hugePagesRequirements": { + "type": "string", + "description": "Specifies requirements on the huge pages resources for the virtual memory." + } + } + }, + "RequestedAdditionalCapabilityData": { + "type": "object", + "required": [ + "requestedAdditionalCapabilityName", + "supportMandatory", + "targetPerformanceParameters" + ], + "properties": { + "requestedAdditionalCapabilityName": { + "type": "string", + "description": "Specifies a requested additional capability for the VDU" + }, + "supportMandatory": { + "type": "boolean", + "description": "Indicates whether the requested additional capability is mandatory for successful operation" + }, + "minRequestedAdditionalCapabilityVersion": { + "type": "string", + "description": "Specifies the minimum version of the requested additional capability" + }, + "preferredRequestedAdditionalCapabilityVersion": { + "type": "string", + "description": "Specifies the preferred version of the requested additional capability" + }, + "targetPerformanceParameters": { + "type": "array", + "description": "Specifies specific attributes, dependent on the requested additional capability type.", + "items": { + "$ref": "#/components/schemas/KeyValuePairs" + } + } + } + }, + "KeyValuePairs": { + "description": "This data type represents a list of key-value pairs. The order of the pairs in the list is not\nsignificant. In JSON, a set of key-value pairs is represented as an object. It shall comply with\nthe provisions defined in clause 4 of IETF RFC 8259.\n", + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "LogicalNodeRequirements": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Identifies this set of logical node requirements" + }, + "logicalNodeRequirementDetail": { + "type": "array", + "description": "The logical node-level compute, memory and I/O requirements. An array of key-value pairs that articulate the deployment requirements. This could include the number of CPU cores on this logical node, a memory configuration specific to a logical node (e.g. such as available in the Linux kernel via the libnuma library) or a requirement related to the association of an I/O device with the logical node. \n", + "items": { + "type": "string", + "format": "not-specified" + } + } + } + }, + "AppExternalCpd": { + "title": "AppExternalCpd", + "type": "object", + "properties": { + "inheritedAttributes": { + "type": "string", + "description": "All attributes inherited from Cpd. See note 2." + }, + "virtualNetworkInterfaceRequirements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VirtualNetworkInterfaceRequirements" + }, + "description": "Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1." + }, + "additionalServiceData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AdditionalServiceData" + }, + "description": "Additional service identification data of the external CP. For the definition of AdditionalServiceData, refer to clause 7.1.18.3 of ETSI GS NFV IFA 011 [1]." + } + }, + "description": "The AppExternalCpd data type supports the specification of MEC application requirements related to external \nconnection point.\n\nNOTE 1: An AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\"\nin AppExternalCpd corresponding to primary container cluster network interfaces.\n\nNOTE 2: For CPs exposed by MEC Applications realized only by one or set of OS containers and used by\nthe OS containers to connect to the primary container cluster external network, the ability to configure\nvirtualised resources based on cpRole and trunkMode attributes might not be supported by all container technologies.\n" + }, + "AdditionalServiceData": { + "type": "object", + "required": [ + "portData" + ], + "properties": { + "portData": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ServicePortData" + }, + "minItems": 1 + }, + "serviceData": { + "type": "string", + "description": "Service matching information exposed by the VirtualCp. See note." + } + }, + "description": "This information element describes the additional service data of the VirtualCp used to expose\nproperties of the VirtualCp to NFV-MANO.\n\nIf the VirtualCp is exposed by a VNF component realized by one or a set of OS containers,\nthe properties are mirrored from the declarative descriptor of the corresponding MCIO where available. \n\nNOTE: This attribute shall only be present if additional information is needed to identify the\nservice termination within the VNF, such as for example a url path information in an HTTP request\nrequired to allow a single VirtualCp IP address to be used for several HTTP based services that\nuse the same portnumber. \n" + }, + "ServicePortData": { + "type": "object", + "required": [ + "name", + "protocol", + "port", + "portConfigurable" + ], + "properties": { + "name": { + "type": "string", + "description": "The name of the port exposed by the VirtualCp." + }, + "protocol": { + "type": "string", + "enum": [ + "TCP", + "UDP", + "SCTP" + ], + "description": "The L4 protocol for this port exposed by the VirtualCp." + }, + "port": { + "type": "integer", + "description": "The L4 port number exposed by the VirtualCp." + }, + "portConfigurable": { + "type": "boolean", + "description": "Specifies whether the port attribute value is allowed to be configurable." + } + } + }, + "VirtualNetworkInterfaceRequirements": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Provides a human readable name for the requirement." + }, + "description": { + "type": "string", + "description": "Provides a human readable description of the requirement." + }, + "standardizedNetworkInterfaceRequirements": { + "type": "string", + "description": "The requirements on standardized network interface capabilities, e.g. SR-IOV or secondary container cluster network interface deployment requirements.See note" + }, + "networkInterfaceRequirements": { + "type": "string", + "description": "The additional network interface requirements beyond those specified in the standardizedNetworkInterfaceRequirements attribute.An element from an array of key-value pairs that articulate the network interface deployment requirements.See note." + }, + "nicIoRequirements": { + "items": { + "$ref": "#/components/schemas/LogicalNodeRequirements" + }, + "description": "This references (couples) the CPD with any logical node I/O requirements (for network devices) that may have been created. Linking these attributes is necessary so that I/O requirements that need to be articulated at the logical node level can be associated with the network interface requirements associated with the CPD.See note" + } + }, + "description": "NOTE: At least one of the attributes \"standardizedNetworkInterfaceRequirements\", \"networkInterfaceRequirements\", \"nicIoRequirements\" shall be present\n" + }, + "AppPkgInfo": { + "title": "AppPkgInfo", + "required": [ + "id", + "appDId", + "appName", + "appSoftwareVersion", + "appDVersion", + "checksum", + "softwareImages", + "onboardingState", + "operationalState", + "usageState", + "mecInfo", + "_links" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the onboarded application package." + }, + "appDId": { + "type": "string", + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique." + }, + "appProvider": { + "type": "string", + "description": "Provider of the application and of the AppD." + }, + "appName": { + "type": "string", + "description": "Name to identify the MEC application." + }, + "appSoftwareVersion": { + "type": "string", + "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package." + }, + "appDVersion": { + "type": "string", + "description": "Identifies the version of the application descriptor." + }, + "checksum": { + "$ref": "#/components/schemas/Checksum" + }, + "signingCertificate": { + "type": "string", + "description": "The singleton signing certificate if it is included as a file in the AppD archive." + }, + "softwareImages": { + "description": "Information of application software image in application package. Type is TBD. See note 1.", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "additionalArtifacts": { + "description": "Additional information of application package artifacts that are not application \nsoftware images. Type is TBD. See note 2.\n", + "type": "array", + "items": { + "type": "string", + "format": "not-specified" + } + }, + "onboardingState": { + "$ref": "#/components/schemas/OnboardingState" + }, + "operationalState": { + "$ref": "#/components/schemas/AppPkg.OperationalState" + }, + "usageState": { + "$ref": "#/components/schemas/UsageState" + }, + "mecInfo": { + "type": "array", + "description": "The MEC version that compatible with this application. This information is copied from the AppD.", + "items": { + "type": "string" + } + }, + "onBoardingFailureDetails": { + "description": "Failure details of current onboarding procedure", + "$ref": "#/components/schemas/ProblemDetails" + }, + "userDefinedData": { + "$ref": "#/components/schemas/KeyValuePairs", + "description": "\"'This data 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 8259'\"\n" + }, + "_links": { + "$ref": "#/components/schemas/AppPkgInfo.links" + } + }, + "description": "The data type AppPkgInfo represents the parameters for an application package resource\nNOTE 1: The data type of application software image information data model is related to virtualisation method and \n needs for further study.\nNOTE 2: The data type of additional information of application package artifacts is not specified in the present \n document.\nNOTE 3: This attribute applies only for the MEAO\n" + }, + "AppPkgInfoModifications": { + "title": "AppPkgInfoModifications", + "required": [ + "OperationalState" + ], + "type": "object", + "properties": { + "OperationalState": { + "$ref": "#/components/schemas/OperationalState2" + } + }, + "description": "'The data type represents the operational state for an application package resource'" + }, + "AppPkg.OperationalState": { + "title": "AppPkg.OperationalState", + "enum": [ + "ENABLED", + "DISABLED" + ], + "type": "string", + "description": "Operational state of the onboarded application package:\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", + "examples": [ + "ENABLED" + ] + }, + "OnboardingState": { + "title": "OnboardingState", + "enum": [ + "CREATED", + "UPLOADING", + "PROCESSING", + "ONBOARDED" + ], + "type": "string", + "description": "Onboarding state of application package", + "examples": [ + "CREATED" + ] + }, + "UsageState": { + "title": "UsageState", + "enum": [ + "IN_USE", + "NOT_IN_USE" + ], + "type": "string", + "description": "Usage state of the onboarded instance of the application package", + "examples": [ + "IN_USE" + ] + }, + "AppPkgInfo.links": { + "title": "AppPkgInfo.links", + "required": [ + "self", + "appD", + "appPkgContent" + ], + "type": "object", + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + }, + "appD": { + "$ref": "#/components/schemas/LinkType" + }, + "appPkgContent": { + "$ref": "#/components/schemas/LinkType" + }, + "vnfPkgInfo": { + "$ref": "#/components/schemas/LinkType" + } + }, + "description": "Links to resources related to this resource." + }, + "AppPkgNotification": { + "title": "AppPkgNotification", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "appPkgId", + "appDId", + "operationalState", + "_links" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the \"notificationId\" attribute of all these notifications shall have the same value." + }, + "notificationType": { + "$ref": "#/components/schemas/AppPkg.NotificationType" + }, + "subscriptionId": { + "type": "string", + "description": "Identifier of the subscription related to this notification." + }, + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" + }, + "appPkgId": { + "type": "string", + "description": "Identifier of the onboarded application package." + }, + "appDId": { + "type": "string", + "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique." + }, + "operationalState": { + "$ref": "#/components/schemas/OperationalState" + }, + "_links": { + "$ref": "#/components/schemas/AppPkgNotification.links" + } + }, + "description": "'This data type represents an application package management notification for informing the subscribers about onboarding application package resources. The notification is triggered when a new application package is onboarded'" + }, + "AppPkg.NotificationType": { + "title": "AppPkg.NotificationType", + "enum": [ + "AppPackageOnBoarded", + "AppPacakgeEnabled", + "AppPacakgeDisabled", + "AppPackageDeleted" + ], + "type": "string", + "description": "Discriminator for the different notification types", + "examples": [ + "AppPackageOnBoarded" + ] + }, + "AppPkgNotification.links": { + "title": "AppPkgNotification.links", + "required": [ + "subscription" + ], + "type": "object", + "properties": { + "subscription": { + "$ref": "#/components/schemas/LinkType" + } + }, + "description": "Links to resources related to this resource." + }, + "AppPkgSubscriptionInfo": { + "title": "AppPkgSubscriptionInfo", + "required": [ + "id", + "subscriptionType", + "callbackUri", + "_links" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Identifier of the subscription to application package notification." + }, + "subscriptionType": { + "description": "Type of subscription.", + "$ref": "#/components/schemas/AppPkgSubscriptionType" + }, + "callbackUri": { + "type": "string", + "description": "The URI of the endpoint for the notification to be sent to." + }, + "_links": { + "$ref": "#/components/schemas/AppPkgSubscriptionInfo.links" + } + }, + "description": "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'" + }, + "AppPkgSubscriptionType": { + "title": "AppPkgSubscriptionType", + "enum": [ + "AppPackageOnBoardingSubscription", + "AppPackageChangeSubscription", + "AppPackageDeletionSubscription" + ], + "type": "string", + "description": "type of a subscription.", + "examples": [ + "AppPackageOnBoardingSubscription" + ] + }, + "AppPkgSubscriptionInfo.links": { + "title": "AppPkgSubscriptionInfo.links", + "required": [ + "self" + ], + "type": "object", + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + } + }, + "description": "Links to resources related to this resource." + }, + "AppPkgSubscriptionLinkList": { + "title": "AppPkgSubscriptionLinkList", + "required": [ + "_links" + ], + "type": "object", + "properties": { + "_links": { + "$ref": "#/components/schemas/AppPkgSubscriptionLinkList.links" + } + }, + "description": "'The data type represents a subscription link list of notification on application package management'" + }, + "AppPkgSubscriptionLinkList.links": { + "title": "AppPkgSubscriptionLinkList.links", + "required": [ + "self" + ], + "type": "object", + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + }, + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Subscriptions.AppPkgSubscription" + }, + "description": "" + } + }, + "description": "Links to resources related to this resource." + }, + "Subscriptions.AppPkgSubscription": { + "title": "Subscriptions.AppPkgSubscription", + "required": [ + "href", + "subscriptionType" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "The URI referring to the subscription." + }, + "subscriptionType": { + "$ref": "#/components/schemas/AppPkgSubscriptionType" + } + }, + "description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" + }, + "AppPkgSubscription": { + "title": "AppPkgSubscription", + "required": [ + "callbackUri", + "subscriptionType" + ], + "type": "object", + "properties": { + "callbackUri": { + "type": "string", + "description": "The URI of the endpoint for the notification to be sent to." + }, + "subscriptionType": { + "$ref": "#/components/schemas/AppPkgSubscriptionType" + }, + "appPkgFilter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppPkgFilter" + }, + "description": "The attribute-based filter is to filter application packages on which the query applies" + } + }, + "description": "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" + }, + "AppPkgFilter": { + "title": "AppPkgFilter", + "type": "object", + "properties": { + "appPkgInfoId": { + "type": "string", + "description": "Match the application package identifier which is allocated by the MEO. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter. see note." + }, + "appDId": { + "type": "string", + "description": "Match the application descriptor identifier which is allocated by the application provider. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter. See note." + }, + "appProvider": { + "type": "string", + "description": "Match the provider's name of the onboarded application." + }, + "appName": { + "type": "string", + "description": "Match the name of the onboarded application." + }, + "appSoftwareVersion": { + "type": "string", + "description": "Match the software version of the application package." + }, + "appDVersion": { + "type": "string", + "description": "Match the version of the application descriptor." + }, + "operationalState": { + "$ref": "#/components/schemas/OperationalState3" + }, + "usageState": { + "type": "string", + "description": "Match particular usage state of the application package. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise.", + "enum": [ + "N_USE", + "NOT_IN_USE" + ] + } + }, + "description": "NOTE: The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter. They should not be used both in the same filter instance, but one alternative should be chosen.\n" + }, + "Checksum": { + "title": "Checksum", + "required": [ + "algorithm", + "hash" + ], + "type": "object", + "properties": { + "algorithm": { + "type": "string", + "description": "Name of the algorithm used to generate the checksum, as defined in ETSI GS NFV-SOL 004. For example, SHA-256, SHA-512." + }, + "hash": { + "type": "string", + "description": "'String 1 The hexadecimal value of the checksum'" + } + } + }, + "CreateAppPkg": { + "title": "CreateAppPkg", + "required": [ + "appPkgName", + "appPkgPath", + "appPkgVersion", + "checksum" + ], + "type": "object", + "properties": { + "appPkgName": { + "type": "string", + "description": "Name of the application package to be onboarded." + }, + "appPkgPath": { + "type": "string", + "format": "uri", + "description": "Address information of the application package. See note." + }, + "appPkgVersion": { + "type": "string", + "description": "Version of the application package to be onboarded.The appPkgName with appPkgVersion can be used to uniquely identify the application package." + }, + "appProvider": { + "type": "string", + "description": "The provider's name of the application package to be onboarded." + }, + "checksum": { + "$ref": "#/components/schemas/Checksum" + }, + "userDefinedData": { + "$ref": "#/components/schemas/KeyValuePairs", + "description": "'This data 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 8259'" + } + }, + "description": "NOTE: It is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7].\n" + }, + "LinkType": { + "title": "LinkType", + "required": [ + "href" + ], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "URI referring to a resource" + } + } + }, + "ProblemDetails": { + "title": "ProblemDetails", + "type": "object", + "properties": { + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the problem" + }, + "instance": { + "type": "string", + "description": "A URI reference that identifies the specific occurrence of the problem" + }, + "status": { + "type": "integer", + "description": "The HTTP status code for this occurrence of the problem", + "format": "int32" + }, + "title": { + "type": "string", + "description": "A short, human-readable summary of the problem type" + }, + "type": { + "type": "string", + "description": "A URI reference according to IETF RFC 3986 that identifies the problem type" + } + } + }, + "TimeStamp": { + "title": "TimeStamp", + "required": [ + "nanoSeconds", + "seconds" + ], + "type": "object", + "properties": { + "nanoSeconds": { + "type": "integer", + "description": "The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32" + }, + "seconds": { + "type": "integer", + "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.", + "format": "int32" + } + } + }, + "OperationalState": { + "title": "OperationalState", + "description": "Operational state of the application package:\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n", + "type": "string", + "enum": [ + "DISABLED", + "ENABLED" + ], + "examples": [ + "DISABLED" + ] + }, + "OperationalState2": { + "title": "OperationalState", + "description": "New value of the \"operationalState\" attribute of the \"OnboardedAppPkgInfo\" structure.\n\nPermitted values\nDISABLED: to disable the individual application package.\nENABLED: to enable the individual application package.\n", + "type": "string", + "enum": [ + "DISABLED", + "ENABLED" + ], + "examples": [ + "ENABLED" + ] + }, + "OperationalState3": { + "title": "OperationalState", + "description": "Match particular operational state of the application package.\n\nENABLED: the application package can be used for instantiation of new application instances.\nDISABLED: the application package cannot be used for further application instantiation requests.\n\nMay be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\",\nand shall be absent otherwise.\n", + "type": "string", + "enum": [ + "ENABLED", + "DISABLED" + ], + "examples": [ + "DISABLED" + ] + } + }, + "responses": { + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests: used when a rate limiter has triggered.", + "content": { + "application/problem+json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "security": [{}] } \ No newline at end of file diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index 597fa6293f60e70b72b6d7b4efb887eefcf1e743..b0cd38fa844d594496c790e13d693efb90ed0ec9 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -9,12 +9,12 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '2.2.1' + version: '3.1.1' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' + description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v3.1.1' + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf' tags: - name: app-pkgm description: App Package management @@ -48,49 +48,18 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfo' description: The response body shall contain a representation of the application package resource - contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false get: tags: @@ -144,50 +113,19 @@ paths: type: array items: $ref: '#/components/schemas/AppPkgInfo' - description: '' - contentMediaType: application/json + description: 'Indicate the success of request. The response message content shall contain a list of representations of the "individual application package" resources that match the attribute filter' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -215,49 +153,18 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfo' description: The response body shall contain a representation of the application package resource - contentMediaType: application/json '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false get: tags: @@ -311,50 +218,19 @@ paths: type: array items: $ref: '#/components/schemas/AppPkgInfo' - description: '' - contentMediaType: application/json + description: Indicate the success of request. The response body message content shall contain a list of representations of the "individual application package" resources that match the attribute filter. '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -380,49 +256,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfo' + items: + $ref: '#/components/schemas/AppPkgInfo' + description: Indicates the success of request. The response message content shall contain a representation of the resource '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -444,47 +292,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false patch: tags: @@ -514,56 +332,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfoModifications' + items: + $ref: '#/components/schemas/AppPkgInfoModifications' + description: Shall be returned when the operation has been completed successfully. '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -589,49 +372,21 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfo' + items: + $ref: '#/components/schemas/AppPkgInfo' + description: Indicates the success of request. The response message content shall contain arepresentation of the resource. '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -653,47 +408,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false patch: tags: @@ -714,7 +439,9 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgInfoModifications' + items: + $ref: '#/components/schemas/AppPkgInfoModifications' + description: Shall be returned when the operation has been completed successfully. required: true responses: '200': @@ -725,54 +452,17 @@ paths: schema: $ref: '#/components/schemas/AppPkgInfoModifications' '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] @@ -799,48 +489,19 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' + description: Upon success, a response message contentrepresenting the created subscription shall bereturned. '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' callbacks: notification: '{$request.body#/subscription.href}': @@ -854,7 +515,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppPkgNotification' + $ref: '#/components/schemas/AppPkgNotification' responses: '204': description: "No content" @@ -875,48 +536,19 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionLinkList' + description: Upon success, a response message content containing a list of zero or more subscriptions shallbe returned. '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /subscriptions/{subscriptionId}: @@ -942,48 +574,19 @@ paths: application/json: schema: $ref: '#/components/schemas/AppPkgSubscriptionInfo' + description: Upon success, a response message content containing a representation of the resource shall be returned. '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false delete: tags: @@ -1004,34 +607,18 @@ paths: description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_packages/{appPkgId}/appd: @@ -1092,49 +679,22 @@ paths: text/plain: schema: $ref: '#/components/schemas/AppD' + description: Indicates the success of request, and the content of the AppD is returned.The response message content shall contain a copy of the file representing the AppD or a + ZIP file that contains the file or multiple files representing the AppD.The "Content-Type" HTTP header shall be set according to the format of the returned file, which is + selected according to "Accept" HTTP header options passed in the request. application/zip: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /onboarded_app_packages/{appDId}/appd: @@ -1195,49 +755,22 @@ paths: text/plain: schema: $ref: '#/components/schemas/AppD' + description: Indicates the success of request, and the content of the AppD is returned.The response message content shall contain a copy of the file representing the AppD or a + ZIP file that contains the file or multiple files representing the AppD.The "Content-Type" HTTP header shall be set according to the format of the returned file, which is + selected according to "Accept" HTTP header options passed in the request. application/zip: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /app_packages/{appPkgId}/package_content: @@ -1267,51 +800,17 @@ paths: content: application/zip: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '416': - description: Range Not Satisfiable . - headers: {} - content: {} + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false put: tags: @@ -1327,65 +826,23 @@ paths: style: simple schema: type: string - requestBody: - description: '' - content: - application/zip: {} - required: false responses: '202': description: The application package has been accepted for uploading, but the processing has not been completed. headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] /onboarded_app_packages/{appDId}/package_content: @@ -1413,51 +870,17 @@ paths: headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '416': - description: Range Not Satisfiable . - headers: {} - content: {} + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false put: tags: @@ -1473,65 +896,23 @@ paths: style: simple schema: type: string - requestBody: - description: '' - content: - application/zip: {} - required: false responses: '202': description: The application package has been accepted for uploading, but the processing has not been completed. headers: {} content: {} '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] ############################################################################### @@ -1557,164 +938,1004 @@ paths: description: No Content headers: {} content: {} + '400': + $ref: '#/components/responses/400' '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/401' '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/403' '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' + $ref: '#/components/responses/429' deprecated: false parameters: [] +components: + schemas: + AppD: + title: AppD + required: + - appDId + - appDVersion + - appDescription + - appName + - appProvider + - appSoftVersion + - mecVersion + - swImageDescriptor + - appExtCpd + type: object + properties: + appDId: + type: string + description: Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1. + appDNSRule: + type: array + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/DNSRuleDescriptor' + description: Describes DNS rules the MEC application requires. + logicalNode: + type: array + items: + $ref: '#/components/schemas/LogicalNodeRequirements' + description: The logical node requirements. See note 6 and note 7. + requestAdditionalCapabilities: + type: array + items: + $ref: '#/components/schemas/RequestedAdditionalCapabilityData' + description: Specifies requirements for additional capabilities. These can be for a range of purposes. One example is acceleration related capabilities. See note 6 and note 7. + mcioConstraintParams: + type: array + items: + $ref: '#/components/schemas/McioConstraintParams' + description: The parameter names for constraints expected to be assigned to MCIOs realizing this application. For the associated semantical context of the values, refer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1]. See note 7. + appDVersion: + type: string + description: Identifies the version of the application descriptor. + appDescription: + type: string + description: Human readable description of the MEC application. + appExtCpd: + type: array + items: + $ref: '#/components/schemas/AppExternalCpd' + description: Describes external interface(s) exposed by this MEC application. See note 4. + appFeatureOptional: + type: array + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency' + description: Describes features a MEC application may use if available. + appFeatureRequired: + type: array + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency' + description: Describes features a MEC application requires to run. + appInfoName: + type: string + description: Human readable name for the MEC application. + appLatency: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/LatencyDescriptor' + appName: + type: string + description: Name to identify the MEC application. + appProvider: + type: string + description: Provider of the application and of the AppD. + appServiceOptional: + type: array + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency' + description: Describes services a MEC application may use if available. + appServiceProduced: + type: array + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDescriptor' + description: Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. + appServiceRequired: + type: array + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency' + description: Describes services a MEC application requires to run. + appSoftVersion: + type: string + description: Identifies the version of software of the MEC application. + mciopId: + type: string + description: Identifies the MCIOP in the application package, used in containerized workload management, when the application is realized by a set of OS containers. See note 7. + mcioIdentificationData: + type: string + description: Name and type of the Managed Container Infrastructure Object (MCIO) that realizes this application. It allows the VNFM to identify the MCIO e.g. when querying the Container Infrastructure Service Management (CISM). See note 7. + items: + $ref: '#/components/schemas/McioIdentificationData' + appTrafficRule: + type: array + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/TrafficRuleDescriptor' + description: Describes traffic rules the MEC application requires. + changeAppInstanceStateOpConfig: + type: string + $ref: '#/components/schemas/changeAppInstanceStateOpConfig' + mecVersion: + type: array + items: + type: string + description: Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation. + virtualStorageDescriptor: + type: array + items: + $ref: '#/components/schemas/VirtualStorageDescriptor' + description: Defines descriptors of virtual storage resources to be used by the MEC application. + userContextTransferCapability: + type: string + $ref: '#/components/schemas/UserContextTransferCapability' + appNetworkPolicy: + type: string + $ref: '#/components/schemas/AppNetworkPolicy' + swImageDescriptor: + type: array + items: + $ref: '#/components/schemas/SwImageDescriptor' + description: Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. See note 5. + terminateAppInstanceOpConfig: + type: string + $ref: '#/components/schemas/TerminateAppInstanceOpConfig' + transportDependencies: + type: object + items: + $ref: './definitions/MEC010p2_definitions.yaml#/definitions/TransportDependency' + description: Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2. + virtualComputeDescriptor: + description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the single VM used to realize this MEC application. See note 5. + type: object + items: + $ref: '#/components/schemas/VirtualComputeDescriptor' + osContainerDescriptor: + type: array + items: + $ref: '#/components/schemas/OsContainerDescriptor' + description: Describes CPU, memory requirements and limits, and software images of the OS Containers realizing this MEC application corresponding to OS Containers sharing the same host and same network namespace. See note 5 and note 7. + description: | + NOTE 1: The appDId shall be used as the unique identifier of the application package that contains this AppD. + NOTE 2: This attribute indicates groups of transport bindings which a service-producing MEC application requires to + be supported by the platform in order to be able to produce its services. At least one of the indicated groups + needs to be supported to fulfil the requirements. + NOTE 3: The support of application descriptor containing descriptions of multiple virtualisation containers and/or + application software images is out of scope of the present document. + NOTE 4: External interfaces are used to connect to e.g. other MEC applications, MEC services, UEs and also MEC + platform and OSS. + NOTE 5: Only one of virtualComputeDescriptor or osContainerDescriptor shall be present. If virtualComputeDescriptor + presents, only a single swImageDescriptor shall be provided. + NOTE 6: If the AppD includes virtualComputeDesc, then logicalNode and requestedAdditionalCapabilites shall not be + present. + NOTE 7: This attribute reflects the ETSI NFV interpretation of the cloud native workloads. + + changeAppInstanceStateOpConfig: + type: object + description: > + This information element defines attributes that affect the invocation of the OperateVnf operation. + required: + - minGracefulStopTimeout + properties: + minGracefulStopTimeout: + type: number + description: Minimum timeout value for graceful stop of a VNF instance. + maxRecommendedGracefulStopTimeout: + type: number + description: > + Maximum recommended timeout value that can be needed to gracefully stop a VNF + instance of a particular type under certain conditions, such as maximum load + condition. This is provided by VNF provider as information for the operator facilitating + the selection of optimal timeout value. This value is not used as constraint. + parameter: + type: array + items: + type: string + description: > + Array of KVP requirements for VNF-specific parameters to be passed when invoking the + OperateVnf operation. See note. + + AppNetworkPolicy: + type: object + properties: + steeredNetwork: + type: object + properties: + cellularNetwork: + type: boolean + description: If present and the application prefers to use a cellular network, set to true. Otherwise, set to false. + wi-fiNetwork: + type: boolean + description: If present and the application prefers to use a Wi-Fi network, set to true. Otherwise, set to false. + fixedAccessNetwork: + type: boolean + description: If present and the application prefers to use a fixed access network, set to true. Otherwise, set to false. + description: Option for the application to specify a type of network to carry its traffic. + required: + - steeredNetwork + description: Network policy in the application instantiation and operation. + + UserContextTransferCapability: + type: object + properties: + statefulApplication: + type: boolean + description: If the application is stateful, this attribute shall be set to true. Otherwise, set to false. + userContextTransferSupport: + type: boolean + description: This attribute shall be present if the application is stateful and absent otherwise. If the application supports user context transfer, set to true. Otherwise, set to false. + required: + - statefulApplication + description: Information about user context transfer capability of the application. + + VirtualStorageDescriptor: + type: object + description: Defines descriptors of virtual storage resources to be used by the MEC application. + required: + - id + - typeOfStorage + properties: + id: + type: string + description: Unique identifier of this VirtualStorageDesc in the VNFD. + typeOfStorage: + type: string + enum: + - BLOCK + - OBJECT + - FILE + description: Type of virtualized storage resource. + blockStorageData: + $ref: '#/components/schemas/BlockStorageData' + description: Details of block storage. Required when typeOfStorage is set to "BLOCK". + objectStorageData: + $ref: '#/components/schemas/ObjectStorageData' + description: Details of object storage. Required when typeOfStorage is set to "OBJECT". + fileStorageData: + $ref: '#/components/schemas/FileStorageData' + description: Details of file storage. Required when typeOfStorage is set to "FILE". + nfviMaintenanceInfo: + $ref: '#/components/schemas/NfviMaintenanceInfo' + description: Information on NFVI operation and maintenance rules for instances based on this VirtualStorageDesc. + perVnfcInstance: + type: boolean + description: Indicates whether the virtual storage resource should be instantiated per VNFC instance. + + NfviMaintenanceInfo: + type: object + properties: + impactNotificationLeadTime: + type: number + description: The minimum notification lead time requested for upcoming impact of the virtualised resource or their group. + isImpactMitigationRequested: + type: boolean + description: Indicates if it is requested to provide virtualised resource(s) of the same characteristics as the impacted ones to compensate for the impact. + supportedMigrationType: + type: array + items: + type: string + enum: + - NO_MIGRATION + - OFFLINE_MIGRATION + - LIVE_MIGRATION + description: Specifies the allowed migration types in order of preference in case of an impact. + maxUndetectableInterruptionTime: + type: number + description: Specifies the maximum interruption time that can go undetected at the VNF level during live migration. + minRecoveryTimeBetweenImpacts: + type: number + description: Specifies the time required by the group to recover from an impact, indicating the minimum time between consecutive impacts of the group. + maxNumberOfImpactedInstances: + type: array + items: + $ref: '#/components/schemas/MaxNumberOfImpactedInstances' + description: Specifies the maximum number of instances that can be impacted simultaneously within the group of virtualised resources for different group sizes. + minNumberOfPreservedInstances: + type: array + items: + $ref: '#/components/schemas/MinNumberOfPreservedInstances' + description: Specifies the minimum number of instances which need to be preserved simultaneously within the group of virtualised resources for different group sizes. + MaxNumberOfImpactedInstances: + type: object + properties: + groupSize: + type: integer + description: Determines the size of the group for which the maxNumberOfImpactedInstances is specified. + maxNumberOfImpactedInstances: + type: integer + description: The maximum number of instances that can be impacted simultaneously within the group of the specified size. + MinNumberOfPreservedInstances: + type: object + properties: + groupSize: + type: integer + description: Determines the size of the group for which the minNumberOfPreservedInstances is specified. + minNumberOfPreservedInstances: + type: integer + description: The minimum number of instances which need to be preserved simultaneously within the group of the specified size. + + ObjectStorageData: + type: object + properties: + maxSizeOfStorage: + type: number + description: Maximum size of virtualized storage resource in GB. + FileStorageData: + type: object + properties: + sizeOfStorage: + type: number + description: Size of virtualized storage resource in GB. + fileSystemProtocol: + type: string + description: The shared file system protocol (e.g. NFS, CIFS). + intVirtualLinkDesc: + $ref: '#/components/schemas/VnfVirtualLinkDesc' + description: Reference of the internal VLD which this file storage connects to. + VirtualLinkDescFlavour: + type: object + properties: + flavourId: + type: string + description: Identifies a flavour within a VnfVirtualLinkDesc. + qos: + $ref: '#/components/schemas/QoS' + description: QoS of the VL. + required: + - flavourId + + QoS: + type: object + properties: + latency: + type: number + description: Specifies the maximum latency in ms. + packetDelayVariation: + type: number + description: Specifies the maximum jitter in ms. + packetLossRatio: + type: number + description: Specifies the maximum packet loss ratio. + required: + - latency + - packetDelayVariation + + ConnectivityType: + type: object + properties: + layerProtocol: + type: array + description: Specifies the protocols that the VL uses. + items: + type: string + enum: + - Ethernet + - MPLS + - ODU2 + - IPV4 + - IPV6 + - Pseudo-Wire + - Etc + minItems: 1 + flowPattern: + type: string + description: Specifies the flow pattern of the connectivity (Line, Tree, Mesh, etc.). + required: + - layerProtocol + + VnfVirtualLinkDesc: + type: object + properties: + virtualLinkDescId: + type: string + description: Unique identifier of this internal VLD in VNFD. + virtualLinkDescFlavour: + type: array + items: + $ref: '#/components/schemas/VirtualLinkDescFlavour' + description: Describes a specific flavour of the VL with specific bitrate requirements. + connectivityType: + $ref: '#/components/schemas/ConnectivityType' + description: See clause 7.1.7.3. + testAccess: + type: array + items: + type: string + description: Specifies test access facilities expected on the VL. + description: + type: string + description: Provides human-readable information on the purpose of the VL. + monitoringParameter: + type: array + items: + $ref: '#/components/schemas/MonitoringParameter' + description: Specifies the virtualised resource related performance metrics on VLD level to be tracked by the VNFM. + nfviMaintenanceInfo: + $ref: '#/components/schemas/NfviMaintenanceInfo' + description: Provides information on the rules to be observed when an instance based on this VnfVirtualLinkDesc is impacted during NFVI operation and maintenance. + externallyManaged: + type: string + enum: + - REQUIRED + - ALLOWED + default: ALLOWED + description: Specifies the intent of the VNF designer with respect to the internal VL instances created from this descriptor being externally managed. + + TerminateAppInstanceOpConfig: + type: object + description: > + This information element defines attributes that affect the invocation of the TerminateVnf operation. + required: + - minGracefulTerminationTimeout + properties: + minGracefulTerminationTimeout: + type: number + description: Minimum timeout value for graceful stop of a VNF instance. + maxRecommendedGracefulTerminationTimeout : + type: number + description: > + Maximum recommended timeout value that can be needed to gracefully terminate a + VNF instance of a particular type under certain conditions, such as maximum load + condition. This is provided by VNF provider as information for the operator facilitating + the selection of optimal timeout value. This value is not used as constraint. + parameter: + type: array + items: + type: string + description: > + Array of KVP requirements for VNF-specific parameters to be passed when invoking the + TerminateVnf operation. See note. + + SwImageDescriptor: + type: object + required: + - id + - name + - version + - containerFormat + - swImage + properties: + id: + type: string + description: The identifier of this software image. + name: + type: string + description: The name of this software image. + version: + type: string + items: + $ref: "#/components/schemas/Version" + description: The version of this software image. + checksum: + $ref: "#/components/schemas/ChecksumData" + description: The checksum of the software image file. See note 3. + containerFormat: + type: string + description: The container format describes the container file format in which software image is provided. + diskFormat: + type: string + description: The disk format of a software image is the format of the underlying disk image. See note 1. + minDisk: + type: number + description: The minimal disk size requirement for this software image. See note 1. + minRam: + type: number + description: The minimal RAM requirement for this software image. See note 2. + size: + type: number + description: The size of this software image file. See note 3. + swImage: + type: object + items: + $ref: "#/components/schemas/SwImageDesc" + description: A reference to the actual software image. + operatingSystem: + type: string + description: Specifies the operating system used in the software image. + supportedVirtualisationEnvironment: + type: array + items: + type: string + description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + description: | + NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. + NOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. + NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. -components: - schemas: - AppD: - title: AppD + Version: + type: object required: - - appDId - - appDVersion - - appDescription - - appName - - appProvider - - appSoftVersion - - mecVersion - - swImageDescriptor - - virtualComputeDescriptor + - srcVnfdId + - dstVnfdId + - srcFlavourId + properties: + srcVnfdId: + type: string + description: Identifier of the source VNFD and the source VNF package. See note 1. + dstVnfdId: + type: string + description: Identifier of the destination VNFD and the destination VNF package. See note 1. + srcFlavourId: + type: string + description: Identifier of the deployment flavour in the source VNF package for which this modification applies. See note 2. + description: | + NOTE 1: Either the srcVnfdId or the dstVnfdId shall be equal to the vnfdId of the VNFD containing this version selector. + NOTE 2: It is up to protocol design stage to decide whether there is further optimization potential to apply one modification for multiple srcFlavourIds. + + McioConstraintParams: + title: McioConstraintParams + enum: + - localAffinityCisNode + - nodeAdditionalCapabilitySsd + - nodeAdditionalCapabilityDpdk + - nodeAdditionalCapabilitySriov + - nodeAdditionalCapabilityGpu + - nodeAdditionalCapabilityFpga + - nodeAdditionalCapabilityCpuPin + - nodeCapabilityLogicalNuma + - nodePool + type: string + description: | + The parameter names for constraints expected to be assigned to MCIOs realizing this application.The value specifies the standardized + semantical context of the MCIO constraints and the parameter names for the MCIO constraints in the MCIO declarative descriptor.The mcioConstraintParams + attribute shall have one of the following values, expressing the associated semantical context.. For the associated semantical context of the values, + refer to the description under the table 7.1.6.2.2-1 of ETSI GS NFV IFA 011 [1]. + + McioIdentificationData: type: object + required: + - name + - type properties: - appDId: + name: type: string - description: Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1. - appDNSRule: + description: The name of the mcio. See note 1. + type: + type: string + description: The type of the mcio. See note 2. + description: | + NOTE 1: When the container infrastructure service is a Kubernetes® instance it is the value of the 'metadata.name' + field in Kubernetes® manifest. + NOTE 2: When the container infrastructure service is a Kubernetes® instance it is the value of the 'kind' field in + Kubernetes® manifest. + + OsContainerDescriptor: + title: OsContainerDescriptor + type: object + required: + - osContainerDescId + - name + - description + - swImageDesc + properties: + osContainerDescId: + type: string + description: Unique identifier of this OsContainerDesc in the VNFD. + name: + type: string + description: Human readable name of this OS container. + description: + type: string + description: Human readable description of this OS container. + requestedCpuResources: + type: integer + description: Number of CPU resources requested for the container (e.g. in milli-CPU-s). + requestedMemoryResources: + type: number + description: Amount of memory resources requested for the container (e.g. in MB). + requestedEphemeralStorageResources: + type: number + description: Size of ephemeral storage resources requested for the container (e.g. in GB). + extendedResourceRequests: type: array items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/DNSRuleDescriptor' - description: Describes DNS rules the MEC application requires. - appDVersion: + $ref: '#/components/schemas/KeyValuePairs' + description: An array of key-value pairs of extended resources required by the container see note. + additionalProperties: type: string - description: Identifies the version of the application descriptor. - appDescription: + description: See note. + cpuResourceLimit: + type: integer + description: Number of CPU resources the container can maximally use (e.g. in milli-CPU). + memoryResourceLimit: + type: number + description: Amount of memory resources the container can maximally use (e.g. in MB). + ephemeralStorageResourceLimit: + type: number + description: Size of ephemeral storage resources the container can maximally use (e.g. in GB). + hugePageResources: + type: object + description: Specifies HugePages resources requested for the container, which the container can maximally use. + additionalProperties: + type: string + cpuPinningRequirements: + $ref: '#/components/schemas/VirtualCpuPinningData' + description: Requirements for CPU pinning configuration for this OS container. + swImageDesc: + $ref: '#/components/schemas/SwImageDesc' + description: Describes the software image realizing this OS container. + bootData: + type: string + description: Contains a string or a URL to a file contained in the VNF package used to customize a container resource at boot time. The bootData may contain variable parts that are replaced by deployment specific values before being sent. + monitoringParameters: + type: array + items: + $ref: '#/components/schemas/MonitoringParameter' + description: Specifies the virtualized resource related performance metrics on the OsContainerDesc level to be tracked by the VNFM. + description: | + NOTE: Extended resources are to describe any type of resource provided by the container infrastructure. One + example implementation of extended resources is "Extended Resources" in case the container infrastructure + service is a Kubernetes® instance. + + MonitoringParameter: + type: object + required: + - monitoringParameterId + - performanceMetric + properties: + monitoringParameterId: type: string - description: Human readable description of the MEC application. - appExtCpd: + description: Unique identifier of the monitoring parameter. + name: + type: string + description: Human readable name of the monitoring parameter. + performanceMetric: + type: string + description: Specifies the virtualised resource performance metric. + collectionPeriod: + type: string + description: An attribute that describes the periodicity at which to collect the performance information. + + VirtualComputeDescriptor: + title: VirtualComputeDescriptor + type: object + required: + - virtualComputeDescId + - virtualMemory + - virtualCpu + properties: + virtualComputeDescId: + type: string + description: Unique identifier of this VirtualComputeDesc in the VNFD. + logicalNode: type: array items: - $ref: '#/components/schemas/AppExternalCpd' - description: Describes external interface(s) exposed by this MEC application. - appFeatureOptional: + $ref: '#/components/schemas/LogicalNodeRequirements' + requestAdditionalCapabilities: type: array items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency' - description: Describes features a MEC application may use if available. - appFeatureRequired: + $ref: '#/components/schemas/RequestedAdditionalCapabilityData' + computeRequirements: + description: Specifies compute requirements. type: array items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency' - description: Describes features a MEC application requires to run. - appInfoName: - type: string - description: Human readable name for the MEC application. - appLatency: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/LatencyDescriptor' - appName: - type: string - description: Name to identify the MEC application. - appProvider: - type: string - description: Provider of the application and of the AppD. - appServiceOptional: + type: string + format: not-specified + virtualMemory: + $ref: '#/components/schemas/VirtualMemoryData' + virtualCpu: + $ref: '#/components/schemas/VirtualCpuData' + virtualDisk: type: array items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency' - description: Describes services a MEC application may use if available. - appServiceProduced: + $ref: '#/components/schemas/BlockStorageData' + + VirtualCpuData: + type: object + required: + - numVirtualCpu + properties: + cpuArchitecture: + type: string + description: CPU architecture type. Examples are x86, ARM. + numVirtualCpu: + type: integer + description: Number of virtual CPUs. + virtualCpuClock: + type: number + description: Minimum virtual CPU clock rate (e.g. in MHz). + virtualCpuOversubscriptionPolicy: + type: string + description: The CPU core oversubscription policy, e.g. the relation of virtual CPU cores to physical CPU cores/threads. + vduCpuRequirements: type: array items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDescriptor' - description: Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. - appServiceRequired: + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the Compute (CPU) for the VDU. + virtualCpuPinning: + $ref: '#/components/schemas/VirtualCpuPinningData' + + BlockStorageData: + type: object + required: + - sizeOfStorage + properties: + sizeOfStorage: + type: number + description: Size of virtualised storage resource in GB. + vduStorageRequirements: type: array items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency' - description: Describes services a MEC application requires to run. - appSoftVersion: + $ref: '#/components/schemas/KeyValuePairs' + description: An array of key-value pairs that articulate the storage deployment requirements. + rdmaEnabled: + type: boolean + description: Indicate if the storage support RDMA. + swImageDesc: + $ref: '#/components/schemas/SwImageDesc' + description: References the software image to be loaded on the VirtualStorage resource created based on this VirtualStorageDesc. Shall be absent when used for virtual disks. See note. + description: | + NOTE: This attribute shall not be present in a VirtualStorageDesc used in a VDU realized by one or a set of OS containers + + SwImageDesc: + type: object + required: + - id + - name + - version + - containerFormat + - swImage + properties: + id: type: string - description: Identifies the version of software of the MEC application. - appTrafficRule: + description: The identifier of this software image. + name: + type: string + description: The name of this software image. + version: + type: string + description: The version of this software image. + checksum: + $ref: '#/components/schemas/ChecksumData' + description: The checksum of the software image file. See note 3 + containerFormat: + type: string + description: The container format describes the container file format in which software image is provided. + diskFormat: + type: string + description: The disk format of a software image is the format of the underlying disk image. See note 1 + minDisk: + type: number + description: The minimal disk size requirement for this software image. The value of the "size of storage" attribute of the VirtualStorageDesc referencing this SwImageDesc shall not be smaller than the value of minDisk. See note 1 + minRam: + type: number + description: The minimal RAM requirement for this software image. The value of the "size" attribute of VirtualMemoryData of the Vdu referencing this SwImageDesc shall not be smaller than the value of minRam. See note 2 + size: + type: number + description: The size of this software image file. See note 3 + swImage: + $ref: '#/components/schemas/SwImageDesc' + description: This is a reference to the actual software image. The reference can be relative to the root of the VNF Package or can be a URL. + operatingSystem: + type: string + description: Specifies the operating system used in the software image. This attribute may also identify if a 32 bit or 64 bit software image is used. + supportedVirtualisationEnvironment: type: array items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/TrafficRuleDescriptor' - description: Describes traffic rules the MEC application requires. - changeAppInstanceStateOpConfig: + type: string + description: Specifies the virtualisation environments (e.g. hypervisor) compatible with this software image. + description: | + NOTE 1: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. + NOTE 2: The attribute may be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and shall be absent otherwise. + NOTE 3: The attribute shall be present for VM-based software images referenced from a Vdu or from a VirtualStorageDesc, and may be present otherwise. + + ChecksumData: + type: object + required: + - algorithm + - hash + properties: + algorithm: type: string - description: NFV - mecVersion: + description: Specifies the algorithm used to obtain the checksum value see note. + hash: + type: string + description: Contains the result of applying the algorithm indicated by the algorithm attribute to the data to which this ChecksumData refers. + description: | + NOTE: The algorithm attribute value shall be one of the Hash Function Textual Names present in [2]. + + VirtualCpuPinningData: + type: object + properties: + virtualCpuPinningPolicy: + type: string + description: Indicates the policy for CPU pinning. + enum: + - STATIC + - DYNAMIC + virtualCpuPinningRule: type: array items: type: string - description: Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation. - swImageDescriptor: + description: List of rules that should be considered during the allocation of the virtual CPUs to logical CPUs in case of "STATIC" virtualCpuPinningPolicy. + + VirtualMemoryData: + type: object + required: + - virtualMemSize + properties: + virtualMemSize: + type: number + description: Amount of virtual memory in MB. + virtualMemOversubscriptionPolicy: + type: string + description: | + The memory core oversubscription policy in terms of virtual memory to physical memory + on the platform. The cardinality can be 0 during the allocation request, if no particular + value is requested. + vduMemRequirements: + type: array + items: + $ref: '#/components/schemas/KeyValuePairs' + description: Array of key-value pair requirements on the memory for the VDU. + numaEnabled: + type: boolean + description: Specifies the memory allocation to be cognisant of the relevant process/core allocation. + hugePagesRequirements: + type: string + description: Specifies requirements on the huge pages resources for the virtual memory. + + RequestedAdditionalCapabilityData: + type: object + required: + - requestedAdditionalCapabilityName + - supportMandatory + - targetPerformanceParameters + properties: + requestedAdditionalCapabilityName: type: string - description: Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. - terminateAppInstanceOpConfig: + description: Specifies a requested additional capability for the VDU + supportMandatory: + type: boolean + description: Indicates whether the requested additional capability is mandatory for successful operation + minRequestedAdditionalCapabilityVersion: type: string - description: NFV - transportDependencies: + description: Specifies the minimum version of the requested additional capability + preferredRequestedAdditionalCapabilityVersion: + type: string + description: Specifies the preferred version of the requested additional capability + targetPerformanceParameters: type: array + description: Specifies specific attributes, dependent on the requested additional capability type. items: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/TransportDependency' - description: Transports, if any, that this application requires to be provided by the platform. These transports will be used by the application to deliver services provided by this application. Only relevant for service-producing apps. See note 2. - virtualComputeDescriptor: - description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize this MEC application. - type: object + $ref: '#/components/schemas/KeyValuePairs' - virtualStorageDescriptor: + KeyValuePairs: + description: | + This data 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 8259. + type: object + properties: + key: + type: string + value: + type: string + + LogicalNodeRequirements: + type: object + required: + - id + properties: + id: + type: string + format: uuid + description: Identifies this set of logical node requirements + logicalNodeRequirementDetail: type: array + description: > + The logical node-level compute, memory and I/O requirements. An array of key-value pairs + that articulate the deployment requirements. This could include the number of CPU cores on + this logical node, a memory configuration specific to a logical node (e.g. such as available + in the Linux kernel via the libnuma library) or a requirement related to the association of + an I/O device with the logical node. items: type: string - description: Defines descriptors of virtual storage resources to be used by the MEC application. - userContextTransferCapability: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/UserContextTransferCapability' - appNetworkPolicy: - $ref: './definitions/MEC010p2_definitions.yaml#/definitions/AppNetworkPolicy' + format: not-specified AppExternalCpd: title: AppExternalCpd - required: - - inherited_attributes type: object properties: - inherited_attributes: - type: object - description: All attributes inherited from Cpd. + inheritedAttributes: + type: string + description: All attributes inherited from Cpd. See note 2. virtualNetworkInterfaceRequirements: type: array items: - type: string - description: Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. + $ref: '#/components/schemas/VirtualNetworkInterfaceRequirements' + description: Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD. See note 1. + additionalServiceData: + type: array + items: + $ref: '#/components/schemas/AdditionalServiceData' + description: Additional service identification data of the external CP. For the definition of AdditionalServiceData, refer to clause 7.1.18.3 of ETSI GS NFV IFA 011 [1]. + description: | + The AppExternalCpd data type supports the specification of MEC application requirements related to external + connection point. + + NOTE 1: An AppD conformant to the present document shall not specify "virtualNetworkInterfaceRequirements" + in AppExternalCpd corresponding to primary container cluster network interfaces. + + NOTE 2: For CPs exposed by MEC Applications realized only by one or set of OS containers and used by + the OS containers to connect to the primary container cluster external network, the ability to configure + virtualised resources based on cpRole and trunkMode attributes might not be supported by all container technologies. + + AdditionalServiceData: + type: object + required: + - portData + properties: + portData: + type: array + items: + $ref: '#/components/schemas/ServicePortData' + minItems: 1 + serviceData: + type: string + description: Service matching information exposed by the VirtualCp. See note. + description: | + This information element describes the additional service data of the VirtualCp used to expose + properties of the VirtualCp to NFV-MANO. + + If the VirtualCp is exposed by a VNF component realized by one or a set of OS containers, + the properties are mirrored from the declarative descriptor of the corresponding MCIO where available. + + NOTE: This attribute shall only be present if additional information is needed to identify the + service termination within the VNF, such as for example a url path information in an HTTP request + required to allow a single VirtualCp IP address to be used for several HTTP based services that + use the same portnumber. + + ServicePortData: + type: object + required: + - name + - protocol + - port + - portConfigurable + properties: + name: + type: string + description: The name of the port exposed by the VirtualCp. + protocol: + type: string + enum: + - TCP + - UDP + - SCTP + description: The L4 protocol for this port exposed by the VirtualCp. + port: + type: integer + description: The L4 port number exposed by the VirtualCp. + portConfigurable: + type: boolean + description: Specifies whether the port attribute value is allowed to be configurable. + + VirtualNetworkInterfaceRequirements: + type: object + properties: + name: + type: string + description: Provides a human readable name for the requirement. + description: + type: string + description: Provides a human readable description of the requirement. + standardizedNetworkInterfaceRequirements: + type: string + description: The requirements on standardized network interface capabilities, e.g. SR-IOV or secondary container cluster network interface deployment requirements.See note + networkInterfaceRequirements: + type: string + description: The additional network interface requirements beyond those specified in the standardizedNetworkInterfaceRequirements attribute.An element from an array of key-value pairs that articulate the network interface deployment requirements.See note. + nicIoRequirements: + items: + $ref: '#/components/schemas/LogicalNodeRequirements' + description: This references (couples) the CPD with any logical node I/O requirements (for network devices) that may have been created. Linking these attributes is necessary so that I/O requirements that need to be articulated at the logical node level can be associated with the network + interface requirements associated with the CPD.See note + description: | + NOTE: At least one of the attributes "standardizedNetworkInterfaceRequirements", "networkInterfaceRequirements", "nicIoRequirements" shall be present + AppPkgInfo: title: AppPkgInfo required: @@ -1756,11 +1977,19 @@ components: type: string description: The singleton signing certificate if it is included as a file in the AppD archive. softwareImages: - type: object - description: Information of application software image in application package. Type is TBD + description: Information of application software image in application package. Type is TBD. See note 1. + type: array + items: + type: string + format: not-specified additionalArtifacts: - type: object - description: Additional information of application package artifacts that are not application software images. Type is TBD + description: | + Additional information of application package artifacts that are not application + software images. Type is TBD. See note 2. + type: array + items: + type: string + format: not-specified onboardingState: $ref: '#/components/schemas/OnboardingState' operationalState: @@ -1777,19 +2006,28 @@ components: $ref: '#/components/schemas/ProblemDetails' userDefinedData: $ref: '#/components/schemas/KeyValuePairs' - description: "'This data 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 8259'" + description: > + "'This data 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 8259'" _links: $ref: '#/components/schemas/AppPkgInfo.links' - - description: "'The data type AppPkgInfo represents the parameters for an application package resource'" + description: | + The data type AppPkgInfo represents the parameters for an application package resource + NOTE 1: The data type of application software image information data model is related to virtualisation method and + needs for further study. + NOTE 2: The data type of additional information of application package artifacts is not specified in the present + document. + NOTE 3: This attribute applies only for the MEAO + AppPkgInfoModifications: title: AppPkgInfoModifications required: - - operationState + - OperationalState type: object properties: - operationState: - $ref: '#/components/schemas/OperationState' + OperationalState: + $ref: '#/components/schemas/OperationalState2' description: "'The data type represents the operational state for an application package resource'" AppPkg.OperationalState: @@ -1798,7 +2036,10 @@ components: - ENABLED - DISABLED type: string - description: 'Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.' + description: | + Operational state of the onboarded application package: + ENABLED: the application package can be used for instantiation of new application instances. + DISABLED: the application package cannot be used for further application instantiation requests. examples: - ENABLED @@ -1839,6 +2080,7 @@ components: vnfPkgInfo: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppPkgNotification: title: AppPkgNotification required: @@ -1854,7 +2096,8 @@ components: properties: id: type: string - description: "''" + description: Identifier of this notification. If a notification is sent multiple times due to multiple subscriptions, the "notificationId" attribute of all + these notifications shall have the same value. notificationType: $ref: '#/components/schemas/AppPkg.NotificationType' subscriptionId: @@ -1873,6 +2116,7 @@ components: _links: $ref: '#/components/schemas/AppPkgNotification.links' description: "'This data type represents an application package management notification for informing the subscribers about onboarding application package resources. The notification is triggered when a new application package is onboarded'" + AppPkg.NotificationType: title: AppPkg.NotificationType enum: @@ -1893,6 +2137,7 @@ components: subscription: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppPkgSubscriptionInfo: title: AppPkgSubscriptionInfo required: @@ -1925,6 +2170,7 @@ components: description: type of a subscription. examples: - AppPackageOnBoardingSubscription + AppPkgSubscriptionInfo.links: title: AppPkgSubscriptionInfo.links required: @@ -1934,6 +2180,7 @@ components: self: $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. + AppPkgSubscriptionLinkList: title: AppPkgSubscriptionLinkList required: @@ -1943,6 +2190,7 @@ components: _links: $ref: '#/components/schemas/AppPkgSubscriptionLinkList.links' description: "'The data type represents a subscription link list of notification on application package management'" + AppPkgSubscriptionLinkList.links: title: AppPkgSubscriptionLinkList.links required: @@ -1957,6 +2205,7 @@ components: $ref: '#/components/schemas/Subscriptions.AppPkgSubscription' description: '' description: Links to resources related to this resource. + Subscriptions.AppPkgSubscription: title: Subscriptions.AppPkgSubscription required: @@ -1970,6 +2219,7 @@ components: subscriptionType: $ref: '#/components/schemas/AppPkgSubscriptionType' description: "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" + AppPkgSubscription: title: AppPkgSubscription required: @@ -1988,7 +2238,6 @@ components: $ref: '#/components/schemas/AppPkgFilter' description: The attribute-based filter is to filter application packages on which the query applies description: "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" - AppPkgFilter: title: AppPkgFilter @@ -1996,10 +2245,10 @@ components: properties: appPkgInfoId: type: string - description: Match the application package identifier which is allocated by the MEO. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. + description: Match the application package identifier which is allocated by the MEO. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. see note. appDId: type: string - description: Match the application descriptor identifier which is allocated by the application provider. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. + description: Match the application descriptor identifier which is allocated by the application provider. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. See note. appProvider: type: string description: Match the provider's name of the onboarded application. @@ -2013,17 +2262,15 @@ components: type: string description: Match the version of the application descriptor. operationalState: - type: string - description: Match particular operational state of the application package. May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise. - enum: - - ENABLED - - DISABLED + $ref: '#/components/schemas/OperationalState3' usageState: type: string description: Match particular usage state of the application package. May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise. enum: - N_USE - NOT_IN_USE + description: | + NOTE: The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. Checksum: title: Checksum @@ -2038,6 +2285,7 @@ components: hash: type: string description: "'String 1 The hexadecimal value of the checksum'" + CreateAppPkg: title: CreateAppPkg required: @@ -2053,10 +2301,10 @@ components: appPkgPath: type: string format: uri + description: Address information of the application package. See note. appPkgVersion: type: string - description: >- - Version of the application package to be onboarded.The appPkgName with appPkgVersion can be used to uniquely identify the application package. + description: Version of the application package to be onboarded.The appPkgName with appPkgVersion can be used to uniquely identify the application package. appProvider: type: string description: The provider's name of the application package to be onboarded. @@ -2065,11 +2313,8 @@ components: userDefinedData: $ref: '#/components/schemas/KeyValuePairs' description: "'This data 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 8259'" - - KeyValuePairs: - type: object - additionalProperties: - type: object + description: | + NOTE: It is for further study how to convey appPkgPath, and align with ETSI GS NFV-SOL 005 [i.7]. LinkType: title: LinkType @@ -2080,6 +2325,7 @@ components: href: type: string description: URI referring to a resource + ProblemDetails: title: ProblemDetails type: object @@ -2093,13 +2339,14 @@ components: status: type: integer description: The HTTP status code for this occurrence of the problem - contentEncoding: int32 + format: int32 title: type: string description: A short, human-readable summary of the problem type type: type: string description: A URI reference according to IETF RFC 3986 that identifies the problem type + TimeStamp: title: TimeStamp required: @@ -2110,30 +2357,95 @@ components: nanoSeconds: type: integer description: The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - contentEncoding: int32 + format: int32 seconds: type: integer description: The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - contentEncoding: int32 + format: int32 OperationalState: title: OperationalState + description: | + Operational state of the application package: + + ENABLED: the application package can be used for instantiation of new application instances. + DISABLED: the application package cannot be used for further application instantiation requests. + type: string enum: - DISABLED - ENABLED - type: string examples: - DISABLED - OperationState: - title: OperationState + + OperationalState2: + title: OperationalState + description: | + New value of the "operationalState" attribute of the "OnboardedAppPkgInfo" structure. + + Permitted values + DISABLED: to disable the individual application package. + ENABLED: to enable the individual application package. + type: string enum: - DISABLED - ENABLED + examples: + - ENABLED + + OperationalState3: + title: OperationalState + description: | + Match particular operational state of the application package. + + ENABLED: the application package can be used for instantiation of new application instances. + DISABLED: the application package cannot be used for further application instantiation requests. + + May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", + and shall be absent otherwise. type: string + enum: + - ENABLED + - DISABLED examples: - - DISABLED + - DISABLED + responses: + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests: used when a rate limiter has triggered.' + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' security: - {} - diff --git a/README.md b/README.md index 48af656d3ad67a223d76e40611b22d8273e7b456..5ebca7b65e6e02cd57c81ca40f419d2d8c886f66 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,21 @@ # Application package lifecycle and operation granting API -This repository contains OpenAPIs descriptions for the interfaces specified in ETSI GS MEC 010-2. +This repository contains OpenAPIs descriptions for the interfaces specified in ETSI GS MEC 010-2 v3.1.1. ## Online resources -* [Specification document](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf) +* [Specification document](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/03.01.01_60/gs_MEC01002v030101p.pdf) ## Navigate with Swagger UI -* [App Package management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppPkgMgmt.yaml). -* [App Lifecycle management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppLcm.yaml). -* [App Operation Granting API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppGrant.yaml). +* [App Package management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppPkgMgmt.yaml). +* [App Lifecycle management API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppLcm.yaml). +* [App Operation Granting API](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppGrant.yaml). ## Navigate with Redocly -* [App Package management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppPkgMgmt.yaml&nocors). -* [App Lifecycle management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppLcm.yaml&nocors). -* [App Operation Granting API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v2.2.1/MEC010-2_AppGrant.yaml&nocors). +* [App Package management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppPkgMgmt.yaml&nocors). +* [App Lifecycle management API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppLcm.yaml&nocors). +* [App Operation Granting API](https://redocly.github.io/redoc/?url=https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api/raw/v3.1.1/MEC010-2_AppGrant.yaml&nocors). ## License diff --git a/definitions/MEC010p2_definitions.json b/definitions/MEC010p2_definitions.json index 5eef9b31ffa0a73e1b4d0caaed3a13fbc9be4397..f077acc12c6fd758d78a970ab034a50e79a8c054 100644 --- a/definitions/MEC010p2_definitions.json +++ b/definitions/MEC010p2_definitions.json @@ -1,590 +1,640 @@ { - "definitions": { - "ConfigPlatformForAppRequest": { - "type": "object", - "properties": { - "appServiceRequired": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceDependency" - } - }, - "appServiceOptional": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceDependency" - } - }, - "appServiceProduced": { - "type": "array", - "items": { - "$ref": "#/definitions/ServiceDescriptor" - } - }, - "appFeatureRequired": { - "type": "array", - "items": { - "$ref": "#/definitions/FeatureDependency" - } - }, - "appFeatureOptional": { - "type": "array", - "items": { - "$ref": "#/definitions/FeatureDependency" - } - }, - "transportDependencies": { - "type": "array", - "items": { - "$ref": "#/definitions/TransportDependency" - } - }, - "appTrafficRule": { - "type": "array", - "items": { - "$ref": "#/definitions/TrafficRuleDescriptor" - } - }, - "appDNSRule": { - "type": "array", - "items": { - "$ref": "#/definitions/DNSRuleDescriptor" - } - }, - "appLatency": { - "$ref": "#/definitions/LatencyDescriptor" - }, - "userContextTransferCapability": { - "$ref": "#/definitions/UserContextTransferCapability" - }, - "appNetworkPolicy": { - "$ref": "#/definitions/AppNetworkPolicy" + "definitions": { + "ConfigPlatformForAppRequest": { + "type": "object", + "properties": { + "appServiceRequired": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDependency" } - } - }, - "ServiceDependency": { - "title": "ServiceDependency", - "required": [ - "serName", - "version" - ], - "type": "object", - "properties": { - "requestedPermissions": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage." - }, - "serCategory": { - "type": "object", - "description": "See MEC011" - }, - "serName": { - "type": "string", - "description": "The name of the service, for example, RNIS, LocationService, etc." - }, - "serTransportDependencies": { - "type": "array", - "items": { - "$ref": "#/definitions/TransportDependency" - }, - "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note." - }, - "version": { - "type": "string", - "description": "The version of the service." + }, + "appServiceOptional": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDependency" + } + }, + "appServiceProduced": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDescriptor" + } + }, + "appFeatureRequired": { + "type": "array", + "items": { + "$ref": "#/definitions/FeatureDependency" + } + }, + "appFeatureOptional": { + "type": "array", + "items": { + "$ref": "#/definitions/FeatureDependency" } + }, + "transportDependencies": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportDependency" + } + }, + "appTrafficRule": { + "type": "array", + "items": { + "$ref": "#/definitions/TrafficRuleDescriptor" + } + }, + "appDNSRule": { + "type": "array", + "items": { + "$ref": "#/definitions/DNSRuleDescriptor" + } + }, + "appLatency": { + "$ref": "#/definitions/LatencyDescriptor" + }, + "userContextTransferCapability": { + "$ref": "#/definitions/UserContextTransferCapability" + }, + "appNetworkPolicy": { + "$ref": "#/definitions/AppNetworkPolicy" } - }, - "TransportDependency": { - "title": "TransportDependency", - "required": [ - "labels", - "serializers", - "transport" - ], - "type": "object", - "properties": { - "labels": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table." + } + }, + "ServiceDependency": { + "title": "ServiceDependency", + "required": ["serName", "version"], + "type": "object", + "properties": { + "requestedPermissions": { + "type": "array", + "items": { + "type": "string" }, - "serializers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport." + "description": "Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage." + }, + "serCategory": { + "$ref": "#/definitions/CategoryRef" + }, + "serName": { + "type": "string", + "description": "The name of the service, for example, RNIS, LocationService, etc." + }, + "serTransportDependencies": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportDependency" }, - "transport": { - "$ref": "#/definitions/TransportDescriptor" - } + "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note." + }, + "version": { + "type": "string", + "description": "The version of the service." + } + } + }, + "CategoryRef": { + "title": "CategoryRef", + "required": ["href", "id", "name", "version"], + "type": "object", + "properties": { + "href": { + "type": "string", + "description": "Reference of the catalogue." + }, + "id": { + "type": "string", + "description": "Unique identifier of the category." + }, + "name": { + "type": "string", + "description": "Name of the category." + }, + "version": { + "type": "string", + "description": "Category version." } }, - "TransportDescriptor": { - "title": "TransportDescriptor", - "required": [ - "name", - "protocol", - "security", - "type", - "version" - ], - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of this transport." - }, - "description": { - "type": "string", - "description": "Human-readable description of this transport." - }, - "protocol": { - "type": "string", - "description": "The name of the protocol used. Shall be set to HTTP for a REST API." - }, - "security": { - "type": "object", - "description": "See MEC011" - }, - "type": { + "description": "This type represents the category reference." + }, + "TransportDependency": { + "title": "TransportDependency", + "required": ["labels", "serializers", "transport"], + "type": "object", + "properties": { + "labels": { + "type": "array", + "items": { "type": "string" }, - "version": { - "type": "string", - "description": "The version of the protocol used." + "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table." + }, + "serializers": { + "type": "array", + "items": { + "$ref": "#/definitions/SerializerType" }, - "implSpecificInfo": { - "type": "object", - "description": "Additional implementation specific details of the transport." + "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport." + }, + "transport": { + "$ref": "#/definitions/TransportDescriptor" + } + } + }, + "SerializerType": { + "title": "SerializerType", + "enum": ["JSON", "XML", "PROTOBUF3"], + "type": "string", + "description": "The enumeration SerializerType represents types of serializers. This enumeration shall be extensible.\nNOTE: The enumeration values above shall represent the serializers as defined by the referenced specifications. \n", + "example": ["JSON"] + }, + "TransportDescriptor": { + "title": "TransportDescriptor", + "required": ["name", "protocol", "security", "type", "version"], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of this transport." + }, + "description": { + "type": "string", + "description": "Human-readable description of this transport." + }, + "protocol": { + "type": "string", + "description": "The name of the protocol used. Shall be set to HTTP for a REST API." + }, + "security": { + "$ref": "#/definitions/SecurityInfo" + }, + "type": { + "$ref": "#/definitions/TransportTypes" + }, + "version": { + "type": "string", + "description": "The version of the protocol used." + }, + "implSpecificInfo": { + "type": "string", + "description": "Additional implementation specific details of the transport." + } + } + }, + "TransportTypes": { + "x-etsi-ref": "8.1.6.4", + "type": "string", + "enum": [ + "REST_HTTP", + "MB_TOPIC_BASED", + "MB_ROUTING", + "MB_PUBSUB", + "RPC", + "RPC_STREAMING", + "WEBSOCKET" + ], + "description": "The enumeration TransportType represents types of transports.", + "x-etsi-mec-extensible": true, + "x-etsi-mec-enumeration-table": [ + { + "value": "REST_HTTP", + "description": "RESTful API using HTTP (as defined in IETF RFC 9110 [11])." + }, + { + "value": "MB_TOPIC_BASED", + "description": "Topic-based message bus which routes messages to receivers based on subscriptions, if a pattern passed on subscription matches the topic of the message. EXAMPLE MQTT (see [i.4])." + }, + { + "value": "MB_ROUTING", + "description": "Routing-based message bus which routes messages to receivers based on subscriptions, if a key passed on subscription is equal to the key of the message." + }, + { + "value": "MB_PUBSUB", + "description": "Publish-subscribe based message bus which distributes messages to all subscribers." + }, + { + "value": "RPC", + "description": "Remote procedure call. EXAMPLE GRPC (see [i.5])." + }, + { + "value": "RPC_STREAMING", + "description": "Remote procedure call supporting streams of requests and responses. EXAMPLE GRPC (see [i.5])." + }, + { + "value": "WEBSOCKET", + "description": "Websockets as defined in IETF RFC 6455 [12]." + } + ] + }, + "SecurityInfo": { + "type": "object", + "properties": { + "oAuth2Info": { + "$ref": "#/definitions/OAuth2Info" + }, + "(extensions)": { + "description": "'Extensions for alternative transport mechanisms. These extensions depend on the actual transport, and are out of scope of the present document. For instance, such extensions may be used to signal the necessary parameters for the client to use TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] for more information).'\n", + "type": "array", + "minItems": 0, + "items": { + "type": "string" } } - }, - "ServiceDescriptor": { - "title": "ServiceDescriptor", - "description": "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'", - "required": [ - "serName", - "version", - "transport" - ], - "type": "object", - "properties": { - "serName": { - "type": "string", - "description": "The name of the service, for example, RNIS, LocationService, etc." - }, - "serCategory": { - "type": "object", - "description": "See MEC011" - }, - "version": { + } + }, + "OAuth2Info": { + "description": "Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport.\n", + "type": "object", + "properties": { + "grantTypes": { + "type": "array", + "minItems": 0, + "items": { "type": "string", - "description": "The version of the service." + "enum": ["SEE_DESCRIPTION"] }, - "transportsSupported": { - "type": "array", - "items": { - "$ref": "#/definitions/TransportsSupported" - } - } + "description": "\"List of supported OAuth 2.0 grant types.\\nEach entry shall be one of the following permitted values:\\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\\nOAUTH2_IMPLICIT_GRANT\\n \\t(Implicit grant type)\\nOAUTH2_RESOURCE_OWNER\\n\\t(Resource owner password credentials grant type) \\nOAUTH2_CLIENT_CREDENTIALS\\n\\t(Client credentials grant type)\\nOnly the value \\\"OAUTH2_CLIENT_CREDENTIALS\\\" is supported in the present document. \"\n" + }, + "tokenEndpoint": { + "description": "The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT.", + "type": "string", + "format": "uri" } }, - "TransportsSupported": { - "title": "TransportsSupported", - "type": "object", - "required": [ - "serializers" - ], - "properties": { - "transport": { - "$ref": "#/definitions/TransportDescriptor" - }, - "serializers": { - "type": "array", - "items": { - "type": "string" - }, - "description": "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" + "required": ["grantTypes"] + }, + "ServiceDescriptor": { + "title": "ServiceDescriptor", + "description": "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'", + "required": ["serName", "version", "transport"], + "type": "object", + "properties": { + "serName": { + "type": "string", + "description": "The name of the service, for example, RNIS, LocationService, etc." + }, + "serCategory": { + "type": "object", + "$ref": "#/definitions/CategoryRef" + }, + "version": { + "type": "string", + "description": "The version of the service." + }, + "transportsSupported": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportsSupported" } + } + } + }, + "TransportsSupported": { + "title": "TransportsSupported", + "type": "object", + "required": ["serializers"], + "properties": { + "transport": { + "$ref": "#/definitions/TransportDescriptor" }, - "description": "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" - }, - "FeatureDependency": { - "title": "FeatureDependency", - "required": [ - "featureName", - "version" - ], - "type": "object", - "properties": { - "featureName": { - "type": "string", - "description": "The name of the feature, for example, UserApps, UEIdentity, etc." + "serializers": { + "type": "array", + "items": { + "$ref": "#/definitions/SerializerType" }, - "version": { - "type": "string", - "description": "The version of the feature." - } + "description": "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" } }, - "TrafficRuleDescriptor": { - "title": "TrafficRuleDescriptor", - "required": [ - "action", - "filterType", - "priority", - "trafficFilter", - "trafficRuleId" - ], - "type": "object", - "properties": { - "action": { - "$ref": "#/definitions/Action" - }, - "dstInterface": { - "maxItems": 2, - "type": "array", - "items": { - "$ref": "#/definitions/InterfaceDescriptor" - }, - "description": "" - }, - "filterType": { - "$ref": "#/definitions/FilterType" - }, - "priority": { - "type": "integer", - "description": "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.", - "contentEncoding": "int32" + "description": "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" + }, + "FeatureDependency": { + "title": "FeatureDependency", + "required": ["featureName", "version"], + "type": "object", + "properties": { + "featureName": { + "type": "string", + "description": "The name of the feature, for example, UserApps, UEIdentity, etc." + }, + "version": { + "type": "string", + "description": "The version of the feature." + } + } + }, + "TrafficRuleDescriptor": { + "title": "TrafficRuleDescriptor", + "required": [ + "action", + "filterType", + "priority", + "trafficFilter", + "trafficRuleId" + ], + "type": "object", + "properties": { + "action": { + "$ref": "#/definitions/Action" + }, + "dstInterface": { + "maxItems": 2, + "type": "array", + "items": { + "$ref": "#/definitions/InterfaceDescriptor" }, - "trafficFilter": { - "minItems": 1, - "type": "array", - "items": { - "$ref": "#/definitions/TrafficFilter" - }, - "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host." + "description": "Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2." + }, + "filterType": { + "$ref": "#/definitions/FilterType" + }, + "priority": { + "type": "integer", + "description": "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note 1.", + "contentEncoding": "int32" + }, + "trafficFilter": { + "minItems": 1, + "type": "array", + "items": { + "$ref": "#/definitions/TrafficFilter" }, - "trafficRuleId": { - "type": "string", - "description": "Identifies the traffic rule." - } + "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host." + }, + "trafficRuleId": { + "type": "string", + "description": "Identifies the traffic rule." } }, - "Action": { - "title": "Action", - "enum": [ - "DROP", - "FORWARD_DECAPSULATED", - "FORWARD_AS_IS", - "PASSTHROUGH", - "DUPLICATED_DECAPSULATED", - "DUPLICATE_AS_IS" - ], - "type": "string", - "description": "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'", - "examples": [ - "DROP" - ] - }, - "TrafficFilter": { - "title": "TrafficFilter", - "type": "object", - "properties": { - "dSCP": { - "type": "integer", - "description": "Used to match all IPv4 packets that have the same DSCP.", - "contentEncoding": "int32" - }, - "dstAddress": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." - }, - "dstPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A port or a range of ports." - }, - "dstTunnelPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." - }, - "protocol": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Specify the protocol of the traffic filter." + "description": "NOTE 1: Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.\nNOTE 2: Some applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the \n client (e.g. UE) side and the second on the core network (e.g. EPC) side\n" + }, + "Action": { + "title": "Action", + "enum": [ + "DROP", + "FORWARD_DECAPSULATED", + "FORWARD, ENCAPSULATED", + "PASSTHROUGH", + "DUPLICATE_DECAPSULATED", + "DUPLICATE, .ENCAPSULATED" + ], + "type": "string", + "description": "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'", + "examples": ["DROP"] + }, + "TrafficFilter": { + "title": "TrafficFilter", + "type": "object", + "properties": { + "dSCP": { + "type": "integer", + "description": "Used to match all IPv4 packets that have the same DSCP.", + "contentEncoding": "int32" + }, + "dstAddress": { + "type": "array", + "items": { + "type": "string" }, - "qCI": { - "type": "integer", - "description": "Used to match all packets that have the same QCI.", - "contentEncoding": "int32" + "description": "A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." + }, + "dstPort": { + "type": "array", + "items": { + "type": "string" }, - "srcAddress": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." + "description": "A port or a range of ports." + }, + "dstTunnelPort": { + "type": "array", + "items": { + "type": "string" }, - "srcPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "A port or a range of ports." + "description": "Used for GTP tunnel based traffic rule." + }, + "protocol": { + "type": "array", + "items": { + "type": "string" }, - "srcTunnelAddress": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." + "description": "Specify the protocol of the traffic filter." + }, + "qCI": { + "type": "integer", + "description": "Used to match all packets that have the same QCI.", + "contentEncoding": "int32" + }, + "srcAddress": { + "type": "array", + "items": { + "type": "string" }, - "srcTunnelPort": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." + "description": "An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." + }, + "srcPort": { + "type": "array", + "items": { + "type": "string" }, - "tC": { - "type": "integer", - "description": "Used to match all IPv6 packets that have the same TC.", - "contentEncoding": "int32" + "description": "A port or a range of ports." + }, + "srcTunnelAddress": { + "type": "array", + "items": { + "type": "string" }, - "tag": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for tag based traffic rule." + "description": "Used for GTP tunnel based traffic rule." + }, + "srcTunnelPort": { + "type": "array", + "items": { + "type": "string" }, - "tgtTunnelAddress": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." + "description": "Used for GTP tunnel based traffic rule." + }, + "tC": { + "type": "integer", + "description": "Used to match all IPv6 packets that have the same TC.", + "contentEncoding": "int32" + }, + "tag": { + "type": "array", + "items": { + "type": "string" }, - "uri": { - "type": "array", - "items": { - "type": "string" - } + "description": "Used for tag based traffic rule." + }, + "tgtTunnelAddress": { + "type": "array", + "items": { + "type": "string" }, - "packetLabel": { - "type": "array", - "items": { - "type": "string" - } + "description": "Used for GTP tunnel based traffic rule." + }, + "uri": { + "type": "array", + "items": { + "type": "string" } - } - }, - "DNSRuleDescriptor": { - "title": "DNSRuleDescriptor", - "required": [ - "dnsRuleId", - "domainName", - "ipAddress", - "ipAddressType" - ], - "type": "object", - "properties": { - "dnsRuleId": { - "type": "string", - "description": "Identifies the DNS Rule" - }, - "domainName": { - "type": "string", - "description": "FQDN of the DNS rule" - }, - "ipAddress": { - "type": "string", - "description": "IP address given by the DNS rule" - }, - "ipAddressType": { - "$ref": "#/definitions/IpAddressType" - }, - "ttl": { - "type": "integer", - "description": "Time-to-live value", - "contentEncoding": "int32" + }, + "packetLabel": { + "type": "array", + "items": { + "type": "string" } } - }, - "IpAddressType": { - "title": "IpAddressType", - "enum": [ - "IP_V6", - "IP_V4" - ], - "type": "string", - "description": "Specifies the IP address type", - "examples": [ - "IP_V6" - ] - }, - "LatencyDescriptor": { - "title": "LatencyDescriptor", - "required": [ - "maxLatency" - ], - "type": "object", - "properties": { - "maxLatency": { - "type": "integer", - "description": "The value of the maximum latency in nano seconds tolerated by the MEC application. See note.", - "contentEncoding": "int32" - } + } + }, + "DNSRuleDescriptor": { + "title": "DNSRuleDescriptor", + "required": ["dnsRuleId", "domainName", "ipAddress", "ipAddressType"], + "type": "object", + "properties": { + "dnsRuleId": { + "type": "string", + "description": "Identifies the DNS Rule" + }, + "domainName": { + "type": "string", + "description": "FQDN of the DNS rule" + }, + "ipAddress": { + "type": "string", + "description": "IP address given by the DNS rule" + }, + "ipAddressType": { + "$ref": "#/definitions/IpAddressType" + }, + "ttl": { + "type": "integer", + "description": "Time-to-live value", + "contentEncoding": "int32" } - }, - "UserContextTransferCapability": { - "title": "UserContextTransferCapability", - "required": [ - "statefulApplication" - ], - "type": "object", - "properties": { - "statefulApplication": { - "type": "boolean" - }, - "userContextTransferSupport": { - "type": "boolean" - } + } + }, + "IpAddressType": { + "title": "IpAddressType", + "enum": ["IP_V6", "IP_V4"], + "type": "string", + "description": "Specifies the IP address type", + "examples": ["IP_V6"] + }, + "LatencyDescriptor": { + "title": "LatencyDescriptor", + "required": ["maxLatency"], + "type": "object", + "properties": { + "maxLatency": { + "type": "integer", + "description": "The value of the maximum latency in nano seconds tolerated by the MEC application. See note.", + "contentEncoding": "int32" } - }, - "AppNetworkPolicy": { - "title": "AppNetworkPolicy", - "required": [ - "steeredNetwork" - ], - "type": "object", - "properties": { - "steeredNetwork": { - "$ref": "#/definitions/AppNetworkPolicy.steeredNetwork" - } + } + }, + "UserContextTransferCapability": { + "title": "UserContextTransferCapability", + "required": ["statefulApplication"], + "type": "object", + "properties": { + "statefulApplication": { + "type": "boolean" + }, + "userContextTransferSupport": { + "type": "boolean" } - }, - "AppNetworkPolicy.steeredNetwork": { - "title": "AppNetworkPolicy.steeredNetwork", - "type": "object", - "properties": { - "cellularNetwork": { - "type": "boolean" - }, - "wi-fiNetwork": { - "type": "boolean" - }, - "fixedAccessNetwork": { - "type": "boolean" - } + } + }, + "AppNetworkPolicy": { + "title": "AppNetworkPolicy", + "required": ["steeredNetwork"], + "type": "object", + "properties": { + "steeredNetwork": { + "$ref": "#/definitions/AppNetworkPolicy.steeredNetwork" } - }, - "InterfaceDescriptor": { - "title": "InterfaceDescriptor", - "required": [ - "interfaceType" - ], - "type": "object", - "properties": { - "dstIPAddress": { - "type": "string", - "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface." - }, - "dstMACAddress": { - "type": "string", - "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface." - }, - "interfaceType": { - "$ref": "#/definitions/InterfaceType" - }, - "srcMACAddress": { - "type": "string", - "description": "If the interface type is MAC, the source address identifies the MAC address of the interface." - }, - "tunnelInfo": { - "$ref": "#/definitions/TunnelInfo" - } + } + }, + "AppNetworkPolicy.steeredNetwork": { + "title": "AppNetworkPolicy.steeredNetwork", + "type": "object", + "properties": { + "cellularNetwork": { + "type": "boolean" + }, + "wi-fiNetwork": { + "type": "boolean" + }, + "fixedAccessNetwork": { + "type": "boolean" } - }, - "InterfaceType": { - "title": "InterfaceType", - "enum": [ - "TUNNEL", - "MAC", - "IP" - ], - "type": "string", - "description": "Type of interface.", - "examples": [ - "TUNNEL" - ] - }, - "TunnelInfo": { - "title": "TunnelInfo", - "required": [ - "tunnelDstAddress", - "tunnelSrcAddress", - "tunnelType" - ], - "type": "object", - "properties": { - "tunnelDstAddress": { - "type": "string", - "description": "Destination address of the tunnel." - }, - "tunnelSpecificData": { - "type": "string" - }, - "tunnelSrcAddress": { - "type": "string", - "description": "Source address of the tunnel." - }, - "tunnelType": { - "$ref": "#/definitions/TunnelType" - } + } + }, + "InterfaceDescriptor": { + "title": "InterfaceDescriptor", + "required": ["interfaceType"], + "type": "object", + "properties": { + "dstIPAddress": { + "type": "string", + "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface." + }, + "dstMACAddress": { + "type": "string", + "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface." + }, + "interfaceType": { + "$ref": "#/definitions/InterfaceType" + }, + "srcMACAddress": { + "type": "string", + "description": "If the interface type is MAC, the source address identifies the MAC address of the interface." + }, + "tunnelInfo": { + "$ref": "#/definitions/TunnelInfo" + } + } + }, + "InterfaceType": { + "title": "InterfaceType", + "enum": ["TUNNEL", "MAC", "IP"], + "type": "string", + "description": "Type of interface.", + "examples": ["TUNNEL"] + }, + "TunnelInfo": { + "title": "TunnelInfo", + "required": ["tunnelDstAddress", "tunnelSrcAddress", "tunnelType"], + "type": "object", + "properties": { + "tunnelDstAddress": { + "type": "string", + "description": "Destination address of the tunnel." + }, + "tunnelSpecificData": { + "type": "string" + }, + "tunnelSrcAddress": { + "type": "string", + "description": "Source address of the tunnel." + }, + "tunnelType": { + "$ref": "#/definitions/TunnelType" } - }, - "TunnelType": { - "title": "TunnelType", - "enum": [ - "GTP-U", - "GRE" - ], - "type": "string", - "description": "Type of tunnel.", - "examples": [ - "GTP-U" - ] - }, - "FilterType": { - "title": "FilterType", - "enum": [ - "FLOW", - "PACKET" - ], - "type": "string", - "description": "Definition of filter type: per FLOW or PACKET", - "examples": [ - "FLOW" - ] } + }, + "TunnelType": { + "title": "TunnelType", + "enum": ["GTP-U", "GRE"], + "type": "string", + "description": "Type of tunnel.", + "examples": ["GTP-U"] + }, + "FilterType": { + "title": "FilterType", + "enum": ["FLOW", "PACKET"], + "type": "string", + "description": "If it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and the downstream (e.g. EPC->UE) packets are handled by the same context.", + "examples": ["FLOW"] } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/definitions/MEC010p2_definitions.yaml b/definitions/MEC010p2_definitions.yaml index 1c054af81ab884134309562cc27c3b07cfbe0173..60ecc356089613bbb2bc68dec09983df37b23281 100644 --- a/definitions/MEC010p2_definitions.yaml +++ b/definitions/MEC010p2_definitions.yaml @@ -40,6 +40,7 @@ $ref: '#/definitions/UserContextTransferCapability' appNetworkPolicy: $ref: '#/definitions/AppNetworkPolicy' + ServiceDependency: title: ServiceDependency required: @@ -55,8 +56,7 @@ Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage. serCategory: - type: object - description: See MEC011 + $ref: '#/definitions/CategoryRef' serName: type: string description: The name of the service, for example, RNIS, LocationService, etc. @@ -68,6 +68,30 @@ version: type: string description: The version of the service. + + CategoryRef: + title: CategoryRef + required: + - href + - id + - name + - version + type: object + properties: + href: + type: string + description: Reference of the catalogue. + id: + type: string + description: Unique identifier of the category. + name: + type: string + description: Name of the category. + version: + type: string + description: Category version. + description: This type represents the category reference. + TransportDependency: title: TransportDependency required: @@ -84,10 +108,24 @@ serializers: type: array items: - type: string + $ref: '#/definitions/SerializerType' description: Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. transport: $ref: '#/definitions/TransportDescriptor' + + SerializerType: + title: SerializerType + enum: + - JSON + - XML + - PROTOBUF3 + type: string + description: | + The enumeration SerializerType represents types of serializers. This enumeration shall be extensible. + NOTE: The enumeration values above shall represent the serializers as defined by the referenced specifications. + example: + - JSON + TransportDescriptor: title: TransportDescriptor required: @@ -108,16 +146,88 @@ type: string description: The name of the protocol used. Shall be set to HTTP for a REST API. security: - type: object - description: See MEC011 + $ref: '#/definitions/SecurityInfo' type: - type: string + $ref: '#/definitions/TransportTypes' version: type: string description: The version of the protocol used. implSpecificInfo: - type: object + type: string description: Additional implementation specific details of the transport. + + TransportTypes: + x-etsi-ref: 8.1.6.4 + type: string + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + description: The enumeration TransportType represents types of transports. + x-etsi-mec-extensible: true + x-etsi-mec-enumeration-table: + - value: REST_HTTP + description: RESTful API using HTTP (as defined in IETF RFC 9110 [11]). + - value: MB_TOPIC_BASED + description: Topic-based message bus which routes messages to receivers based on subscriptions, if a pattern passed on subscription matches the topic of the message. EXAMPLE MQTT (see [i.4]). + - value: MB_ROUTING + description: Routing-based message bus which routes messages to receivers based on subscriptions, if a key passed on subscription is equal to the key of the message. + - value: MB_PUBSUB + description: Publish-subscribe based message bus which distributes messages to all subscribers. + - value: RPC + description: Remote procedure call. EXAMPLE GRPC (see [i.5]). + - value: RPC_STREAMING + description: Remote procedure call supporting streams of requests and responses. EXAMPLE GRPC (see [i.5]). + - value: WEBSOCKET + description: Websockets as defined in IETF RFC 6455 [12]. + + SecurityInfo: + type: object + properties: + oAuth2Info: + $ref: '#/definitions/OAuth2Info' + (extensions): + description: > + 'Extensions for alternative transport mechanisms. These extensions depend on the actual + transport, and are out of scope of the present document. + For instance, such extensions may be used to signal the necessary parameters for the client + to use TLSbased authorization defined for alternative transports (see ETSI GS MEC 009 [5] + for more information).' + type: array + minItems: 0 + items: + type: string + + OAuth2Info: + description: > + Parameters related to use of OAuth 2.0. Shall be present in case OAuth 2.0 + (see IETF RFC 6749 [13]) is supported to secure the provision of the service over the transport. + type: object + properties: + grantTypes: + type: array + minItems: 0 + items: + type: string + enum: + - SEE_DESCRIPTION + description: > + "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted + values:\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\nOAUTH2_IMPLICIT_GRANT\n + \t(Implicit grant type)\nOAUTH2_RESOURCE_OWNER\n\t(Resource owner password credentials grant type) + \nOAUTH2_CLIENT_CREDENTIALS\n\t(Client credentials grant type)\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" + is supported in the present document. " + tokenEndpoint: + description: The token endpoint. Shall be present unless the grant type is OAUTH2_IMPLICIT_GRANT. + type: string + format: uri + required: + - grantTypes + ServiceDescriptor: title: ServiceDescriptor description: "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'" @@ -132,7 +242,7 @@ description: The name of the service, for example, RNIS, LocationService, etc. serCategory: type: object - description: See MEC011 + $ref: '#/definitions/CategoryRef' version: type: string description: The version of the service. @@ -140,6 +250,7 @@ type: array items: $ref: '#/definitions/TransportsSupported' + TransportsSupported: title: TransportsSupported type: object @@ -151,9 +262,10 @@ serializers: type: array items: - type: string + $ref: '#/definitions/SerializerType' description: "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" description: "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" + FeatureDependency: title: FeatureDependency required: @@ -167,6 +279,7 @@ version: type: string description: The version of the feature. + TrafficRuleDescriptor: title: TrafficRuleDescriptor required: @@ -184,12 +297,13 @@ type: array items: $ref: '#/definitions/InterfaceDescriptor' - description: '' + description: Describes the destination interface information, . Some applications (e.g. inline/tap) _DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH, one value + shall be provided. If the action is onDUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. See note 2. filterType: $ref: '#/definitions/FilterType' priority: type: integer - description: Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority. + description: Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. See note 1. contentEncoding: int32 trafficFilter: minItems: 1 @@ -200,19 +314,24 @@ trafficRuleId: type: string description: Identifies the traffic rule. + description: | + NOTE 1: Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority. + NOTE 2: Some applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the + client (e.g. UE) side and the second on the core network (e.g. EPC) side Action: title: Action enum: - DROP - FORWARD_DECAPSULATED - - FORWARD_AS_IS + - FORWARD, ENCAPSULATED - PASSTHROUGH - - DUPLICATED_DECAPSULATED - - DUPLICATE_AS_IS + - DUPLICATE_DECAPSULATED + - DUPLICATE, .ENCAPSULATED type: string description: "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'" examples: - DROP + TrafficFilter: title: TrafficFilter type: object @@ -287,6 +406,7 @@ type: array items: type: string + DNSRuleDescriptor: title: DNSRuleDescriptor required: @@ -311,6 +431,7 @@ type: integer description: Time-to-live value contentEncoding: int32 + IpAddressType: title: IpAddressType enum: @@ -320,6 +441,7 @@ description: Specifies the IP address type examples: - IP_V6 + LatencyDescriptor: title: LatencyDescriptor required: @@ -330,6 +452,7 @@ type: integer description: The value of the maximum latency in nano seconds tolerated by the MEC application. See note. contentEncoding: int32 + UserContextTransferCapability: title: UserContextTransferCapability required: @@ -340,6 +463,7 @@ type: boolean userContextTransferSupport: type: boolean + AppNetworkPolicy: title: AppNetworkPolicy required: @@ -348,6 +472,7 @@ properties: steeredNetwork: $ref: '#/definitions/AppNetworkPolicy.steeredNetwork' + AppNetworkPolicy.steeredNetwork: title: AppNetworkPolicy.steeredNetwork type: object @@ -358,6 +483,7 @@ type: boolean fixedAccessNetwork: type: boolean + InterfaceDescriptor: title: InterfaceDescriptor required: @@ -377,6 +503,7 @@ description: If the interface type is MAC, the source address identifies the MAC address of the interface. tunnelInfo: $ref: '#/definitions/TunnelInfo' + InterfaceType: title: InterfaceType enum: @@ -387,6 +514,7 @@ description: Type of interface. examples: - TUNNEL + TunnelInfo: title: TunnelInfo required: @@ -405,6 +533,7 @@ description: Source address of the tunnel. tunnelType: $ref: '#/definitions/TunnelType' + TunnelType: title: TunnelType enum: @@ -414,13 +543,13 @@ description: Type of tunnel. examples: - GTP-U + FilterType: title: FilterType enum: - FLOW - PACKET type: string - description: 'Definition of filter type: per FLOW or PACKET' + description: If it is per FLOW, the filter matches upstream (e.g. UE->EPC) packets and the downstream (e.g. EPC->UE) packets are handled by the same context. examples: - - FLOW - + - FLOW \ No newline at end of file diff --git a/proto3-gen.md b/proto3-gen.md new file mode 100644 index 0000000000000000000000000000000000000000..5ed1345ef10469c147a6dc3d6a3cb968c0a3ef25 --- /dev/null +++ b/proto3-gen.md @@ -0,0 +1,195 @@ +# Protobuf Schema Generation + +[OpenAPI Generator](https://openapi-generator.tech) is used to generate protobuf schema (`.proto3`) files from OpenAPI specifications of MEC010-2 MEC Management; Part 2: Application lifecycle, rules and requirements management + +>**NOTE:** At the time of writing, the tool does not support OAS 3.1 version and we have to first convert the [MEC010-2 APIs](./MEC010-2_AppGrant.yaml, ./MEC010-2_AppLcm.yaml and ./MEC010-2_AppPkgMgmt.yaml) to OAS 3.0 for generating protobuf schema. + +1. Convert OAS for [Traffic Management APIs](./MEC010-2_AppGrant.yaml, ./MEC010-2_AppLcm.yaml and ./MEC010-2_AppPkgMgmt.yaml) from 3.1 to 3.0​ + + - Change the value of `openapi` field from 3.1.0 to 3.0.0​ + + - Use this [VS code extension](https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi) to see the errors in the downgraded YAML (v3.0)​ + + - Manually fix the errors​ + - mostly related to `examples` <--> `example` interchange + - interchange `contentEncoding` <--> `format` + - comment or remove `jsonSchemaDialect` tag and its value + - and some other 3.1 fields that are not supported in 3.0​ (comment them out) + +2. Generate proto files + - Install the `openapi-generator-cli.jar` using the installation procedure mentioned [here](https://openapi-generator.tech/docs/installation#jar). + - Generate the proto files using the following commands: + ```sh + $ java -jar openapi-generator-cli.jar generate -i MEC010-2_AppGrant.yaml -g protobuf-schema -o proto3/ --package-name mec0102 + + $ java -jar openapi-generator-cli.jar generate -i MEC010-2_AppLcm.yaml -g protobuf-schema -o proto3/ --package-name mec0102 + + $ java -jar openapi-generator-cli.jar generate -i MEC010-2_AppPkgMgmt.yaml -g protobuf-schema -o proto3/ --package-name mec0102 + ``` + +3. Carefully inspect the generated `.proto` files for any inconsistencies. Some of the things to look out for: + - Proto3 generated files for enumerations, structures containing allOf, oneOf, anyOf etc. may need to be touched manually + - Check that all the nested models are being _imported_ correctly in their parent models + - Remove redundant proto files + + +4. Validate protobuf schema by generating code from proto3 descriptions in different languages. See [this section](#code-generation-from-proto3) for more details. + +# Code Generation from proto3 + +Below are some code generation examples for Python, Go and Ruby. For other languages, please refer to https://grpc.io/docs/quickstart/. + +### Python + +1. Install the grpcio-tools package + ```sh + $ pip install grpcio-tools + ``` + +2. Create a directory for generated Python stubs + ```sh + $ mkdir python-stubs + ``` + +3. Run the following commands from the root of the directory containing this README that you are reading. + + - Models: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs ./AppGrantProto3/proto3/models/* + + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs ./AppLcmProto3/proto3/models/* + + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + + The above commands will generate .py files for all the data models in the ./models directory + + - Services: + + ```sh + $ python -m grpc_tools.protoc -I./AppGrantProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppGrantProto3/proto3/services/* + + $ python -m grpc_tools.protoc -I./AppLcmProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppLcmProto3/proto3/services/* + + $ python -m grpc_tools.protoc -I./AppPkgMgmtProto3/proto3 --python_out=./python-stubs --grpc_python_out=./python-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` + + The above commands will generate service files for the corresponding APIs, containing: + - Python data models used in the corresponding API + - Classes and functions needed for the supported HTTP methods in the corresponding API + +### Go + +1. Install protocol buffer compiler + ```sh + $ apt install -y protobuf-compiler + ``` +2. Install Go plugins for `protoc` + ```sh + $ go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28.1 + ``` + ```sh + $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0 + ``` +3. Update `PATH` so `protoc` can find the plugins + ```sh + $ export PATH="$PATH:$(go env GOPATH)/bin" + ``` +4. Define a go package by appending `option go_package = "./mec0102.services.appgrantservice";`, `option go_package = "./mec0102.services.applcmservice";` or `option go_package = "./mec0102.services.apppkgmgmtservice";` in .proto files like this: + + ```Go + syntax = "proto3"; + + package mec0102.services.appgrantservice; + + option go_package = "./mec0102.services.appgrantservice"; + + import public "models/.proto"; + + ... + + syntax = "proto3"; + + package mec0102.services.applcmservice; + + option go_package = "./mec0102.services.applcmservice"; + + import public "models/.proto"; + + ... + + syntax = "proto3"; + + package mec0102.services.apppkgmgmtservice; + + option go_package = "./mec0102.services.apppkgmgmtservice"; + + import public "models/.proto"; + ``` + +5. Generate Go code for models and services + ```sh + $ mkdir go-stubs + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/models/* -I./AppGrantProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppGrantProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppGrantProto3/proto3 + + ... + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/models/* -I./AppLcmProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppLcmProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppLcmProto3/proto3 + + ... + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/models/* -I./AppPkgMgmtProto3/proto3 + + $ protoc --go_out=./go-stubs ./AppPkgMgmtProto3/proto3/services/* --go-grpc_out=go-stubs -I./AppPkgMgmtProto3/proto3 + ``` + + + > The generated `.pb.go` files will contain all the protocol buffer code to populate, serialize, and retrieve request and response message types defined in the `models` folder. + + > The `.pb.go` files will contain the stubs for the methods defined in the `.proto` files. + +### Ruby + +1. Install gRPC Ruby Plugin and required tools + ```sh + $ gem install grpc + $ sudo apt install ruby-grpc-tools + ``` + +2. Generate code + ```sh + $ mkdir ruby-stubs + ``` + + Run the following commands to create Ruby modules for all the data models defined in the proto files. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs ./AppGrantProto3/proto3/models/* + + ... + + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs ./AppLcmProto3/proto3/models/* + + ... + + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs ./AppPkgMgmtProto3/proto3/models/* + ``` + Run the following commands to generate services files, containing stub and service classes for the endpoints and methods defined in MEC010-2 APIs. + + ```sh + $ grpc_tools_ruby_protoc -I./AppGrantProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppGrantProto3/proto3/services/* + + ... + + $ grpc_tools_ruby_protoc -I./AppLcmProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppLcmProto3/proto3/services/* + + ... + + $ grpc_tools_ruby_protoc -I./AppPkgMgmtProto3/proto3 --ruby_out=ruby-stubs --grpc_out=ruby-stubs ./AppPkgMgmtProto3/proto3/services/* + ``` \ No newline at end of file