ETSI MEC 010-2 Application Package and Lifecycle Management APIs

ETSI GS MEC 010-2 Part 2 application package management, application lifecycle management and application grant APIs, used by an operations support system to onboard, instantiate, operate and terminate MEC application packages in a MEC system.

OpenAPI Specification

MEC01002_AppPkgMgmt.yaml Raw ↑
openapi: 3.1.0
jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema
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
servers:
- url: https://localhost/app_pkgm/v1
paths:
  /onboarded_app_packages:
    post:
      summary: Create a new resource for onboarded application package.
      description: The POST method is used to create a resource for on-boarding an application package to a MEO/MEAO, which refers to the procedure of "onboarding operation" as described in clause 6.3.3.5. The POST method is also used to create a resource for on-boarding an application package from OSS through MEAO to NFVO as described in clause 5.6.2.
      operationId: OnboardedapppackagesPOST
      tags:
      - app-pkgm
      requestBody:
        description: The POST method is used to create a new resource for onboarding an application package onto a MEO/MEAO.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                CreateAppPkg:
                  $ref: '#/components/schemas/CreateAppPkg'
      responses:
        '201':
          description: "Indicates a successful request. The response message content shall contain a representation of the application package resource defined in clause\_6.2.\n\nThe HTTP response includes a \"Location\" HTTP header that contains the URI of the created resource."
          content:
            application/json:
              schema:
                type: object
                properties:
                  AppPkgInfo:
                    $ref: '#/components/schemas/AppPkgInfo'
        '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'
      parameters: []
    get:
      summary: Query on-boarded application package information.
      description: This GET method queries information relating to on-boarded application packages in the MEO/MEAO matching the filtering criteria. It refers to the procedure of "query operation" of application package as described in clause 6.3.3.2. This GET method also queries information relating to on-boarded application packages in the NFVO matching the filtering criteria by the OSS through MEAO to NFVO.
      operationId: OnboardedapppackagesGET
      tags:
      - app-pkgm
      parameters:
      - $ref: '#/components/parameters/Query.Filter'
      - $ref: '#/components/parameters/Query.All_fields'
      - $ref: '#/components/parameters/Query.Fields'
      - $ref: '#/components/parameters/Query.Exclude_fields'
      - $ref: '#/components/parameters/Query.Exclude_default'
      responses:
        '200':
          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.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AppPkgInfo'
        '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'
  /onboarded_app_packages/{appDId}:
    get:
      summary: Read information of an individual on-boarded application package.
      description: This GET method is used to query the information related to individual application package resources.
      operationId: OnboardedapppackagesGETAppdid
      tags:
      - app-pkgm
      responses:
        '200':
          description: Indicates the success of request. The response message content shall contain a representation of the resource.
          content:
            application/json:
              schema:
                type: object
                properties:
                  AppPkgInfo:
                    $ref: '#/components/schemas/AppPkgInfo'
        '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'
      parameters:
      - name: appDId
        in: path
        required: true
        description: The unique identifier of the appDId.
        schema:
          type: string
    delete:
      summary: Delete an individual on-boarded application package.
      description: This DELETE method realizes the procedure of "delete operation" of application package resource in MEO/MEAO or the procedure of "delete operation" of application package resource in NFVO by OSS through MEAO as described in clause 6.3.3.9.
      operationId: OnboardedapppackagesDELETEAppdid
      tags:
      - app-pkgm
      responses:
        '204':
          $ref: '#/components/responses/204'
        '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'
      parameters:
      - name: appDId
        in: path
        required: true
        description: The unique identifier of the appDId.
        schema:
          type: string
    patch:
      summary: Enable or disable an individual onboarded application package.
      description: This PATCH method updates the operational state of an individual application package resource used by the procedure of "enable operation" as described in clause 6.3.3.6, "disable operation" as described in clause 6.3.3.7.
      operationId: OnboardedapppackagesPATCHAppdid
      tags:
      - app-pkgm
      requestBody:
        description: Parameters for application package information modification.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                AppPkgInfoModifications:
                  $ref: '#/components/schemas/AppPkgInfoModifications'
      responses:
        '200':
          description: Shall be returned when the operation has been completed successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  AppPkgInfoModifications:
                    $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'
      parameters:
      - name: appDId
        in: path
        required: true
        description: The unique identifier of the appDId.
        schema:
          type: string
  /subscriptions:
    post:
      summary: Subscribe to notification related to on-boarding and/or changes of application packages.
      description: The POST method is used to subscribe to notifications about on-boarding an application package, or about operational state changes of on-boarded application package, which is mapped to the procedure of "subscription operation" as described in clause 6.3.3.3.
      operationId: SubscriptionsPOST
      tags:
      - app-pkgm
      requestBody:
        description: The input parameters of "subscribe operation" to notifications about changes related to application package management for the onboarding, or operational state change of application package.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                AppPkgSubscription:
                  $ref: '#/components/schemas/AppPkgSubscription'
      responses:
        '201':
          description: Upon success, a response message content representing the created subscription shall be returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  AppPkgSubscriptionInfo:
                    $ref: '#/components/schemas/AppPkgSubscriptionInfo'
        '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#/callbackUri}':
            post:
              summary: Callback POST used to send a notification
              description: Subscription notification
              operationId: notificationPOST180140
              requestBody:
                description: Subscription notification
                required: true
                content:
                  application/json:
                    schema:
                      type: object
                      properties:
                        subscriptionNotification:
                          $ref: '#/components/schemas/AppPkgSubscription'
              responses:
                '204':
                  description: No content
                '404':
                  description: Not found
      parameters: []
    get:
      summary: Query multiple subscriptions.
      description: This GET method is used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO. Upon success, the response contains the list of links to the subscriptions that are present for the requestor.
      operationId: SubscriptionsGET
      tags:
      - app-pkgm
      responses:
        '200':
          description: Upon success, a response message content containing a list of zero or more subscriptions shall be returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  AppPkgSubscriptionLinkList:
                    $ref: '#/components/schemas/AppPkgSubscriptionLinkList'
        '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'
      parameters: []
  /subscriptions/{subscriptionId}:
    get:
      summary: Read resource of an individual subscription.
      description: This GET method is used to retrieve the individual subscription information to the application package resource in MEO or MEAO.
      operationId: SubscriptionsGETSubscriptionid
      tags:
      - app-pkgm
      responses:
        '200':
          description: Upon success, a response message content containing a representation of the resource shall be returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  AppPkgSubscriptionInfo:
                    $ref: '#/components/schemas/AppPkgSubscriptionInfo'
        '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'
      parameters:
      - name: subscriptionId
        in: path
        required: true
        description: The unique identifier of the subscriptionId.
        schema:
          type: string
    delete:
      summary: Terminate an individual subscription.
      description: This DELETE method is used to delete the individual subscription to notifications about application package changes in MEO or MEAO.
      operationId: SubscriptionsDELETESubscriptionid
      tags:
      - app-pkgm
      responses:
        '204':
          $ref: '#/components/responses/204'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      parameters:
      - name: subscriptionId
        in: path
        required: true
        description: The unique identifier of the subscriptionId.
        schema:
          type: string
  /user_defined_notification:
    post:
      summary: Delivers a notification from the application lifecycle management resource to the subscriber.
      description: The POST method delivers a notification from the application package management resource in MEO or MEAO to the subscriber.
      operationId: UserdefinednotificationPOST
      tags:
      - notification
      requestBody:
        description: A notification of an application package for on-boarding or operational state change.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                AppPkgNotification:
                  $ref: '#/components/schemas/AppPkgNotification'
      responses:
        '204':
          description: 'The notification was delivered successfully.

            The response message content shall be empty.'
          content:
            application/json:
              schema:
                type: object
                properties: {}
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      parameters: []
  /onboarded_app_packages/{appDId}/appd:
    get:
      summary: Read application descriptor of an onboarded application package.
      description: This GET method reads the content of the AppD of on-boarded individual application package resources. The format of the AppD is left for future specification.
      operationId: OnboardedapppackagesAppdGETAppdid
      tags:
      - app-pkgm
      parameters:
      - $ref: '#/components/parameters/Query.Filter1'
      - $ref: '#/components/parameters/Query.All_fields1'
      - $ref: '#/components/parameters/Query.Fields1'
      - $ref: '#/components/parameters/Query.Exclude_fields1'
      - $ref: '#/components/parameters/Query.Exclude_default1'
      - name: appDId
        in: path
        required: true
        description: The unique identifier of the appDId.
        schema:
          type: string
      responses:
        '200':
          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.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  AppD:
                    $ref: '#/components/schemas/AppD'
        '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'
  /onboarded_app_packages/{appDId}/package_content:
    get:
      summary: Fetch an on-boarded application package.
      description: The GET method is used to fetch the onboarded application package content identified by appPkgId or appDId. The client can use this resource to fetch the content of the application package.
      operationId: OnboardedapppackagesPackagecontentGETAppdid
      tags:
      - app-pkgm
      responses:
        '200':
          description: "On success, a copy of the on-boarded application package is returned in the response message content. \n\nThe \"Content-Type\" HTTP header shall be set according to the type of the file, i.e. to \"application/zip\" for an application package."
          content:
            application/json:
              schema:
                type: object
                properties: {}
        '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'
        '416':
          $ref: '#/components/responses/416'
        '429':
          $ref: '#/components/responses/429'
      parameters:
      - name: appDId
        in: path
        required: true
        description: The unique identifier of the appDId.
        schema:
          type: string
    put:
      summary: Upload an application package by providing the content of application package.
      description: This PUT method uploads the content of application package.
      operationId: OnboardedapppackagesPackagecontentPUTAppdid
      tags:
      - app-pkgm
      requestBody:
        description: 'The message content shall contain a ZIP file that represents the application package.

          The "Content-Type" HTTP header shall be set to "application/zip".'
        content:
          application/json: {}
        required: false
      responses:
        '202':
          description: 'The application package has been accepted for uploading, but the processing has not been completed. It is expected to take some time for processing.


            The response message content shall be empty.'
          content:
            application/json:
              schema:
                type: object
                properties: {}
        '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'
      parameters:
      - name: appDId
        in: path
        required: true
        description: The unique identifier of the appDId.
        schema:
          type: string
components:
  schemas:
    Not_specified:
      type: object
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          format: uri
          description: A URI reference according to IETF RFC 3986 that identifies the problem type
        title:
          type: string
          description: A short, human-readable summary of the problem type
        status:
          type: integer
          format: uint32
          description: The HTTP status code for this occurrence of the problem
        detail:
          type: string
          description: A human-readable explanation specific to this occurrence of the problem
        instance:
          type: string
          format: uri
          description: A URI reference that identifies the specific occurrence of the problem
    VirtualStorageDescriptor:
      type: object
      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.
    AppPkgSWImageInfo:
      description: "NOTE 1: The data type of application software image information data model is related to virtualisation method and\n        needs for further study. \n"
    AppPkgArtifactInfo:
      description: "NOTE 2: The data type of additional information of application package artifacts is not specified in the present\n        document.\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\xAE instance it is the value of the 'metadata.name' \n        field in Kubernetes\xAE manifest. \nNOTE 2: When the container infrastructure service is a Kubernetes\xAE instance it is the value of the 'kind' field in \n        Kubernetes\xAE 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\xAE instance. \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.
    AppInstanceSubscriptionType:
      type: string
      enum:
      - AppInstanceStateChangeSubscription
      - AppLcmOpOccStateChangeSubscription
      - AppIdentifierCreationSubscription
      - AppIdentifierDeletionSubscription
      description: String representing the type of a subscription.
    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.
    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"
    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.
    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. \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.

            '
    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 re

# --- truncated at 32 KB (101 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/etsi/refs/heads/main/openapi/mec/MEC01002_AppPkgMgmt.yaml