MEC010-2_AppPkgMgmt.json 101 KB
Newer Older
        "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",
              "$ref": "#/components/schemas/KeyValuePair"
            }
          }
        }
      },
      "KeyValuePair": {
        "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": {
            "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": {
          "inherited_attributes": {
            "type": "object",
            "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": "NOTE 1: An AppD conformant to the present document shall not specify \"virtualNetworkInterfaceRequirements\" in AppExternalCpd corresponding to primary container cluster network interfaces.\nNOTE 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 \n        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": "object",
            "description": "Service matching information exposed by the VirtualCp. See note."
          }
        },
        "description": "NOTE: This attribute shall only be present if additional information is needed to identify the service termination within \n      the VNF, such as for example a url path information in an HTTP request required to allow a single VirtualCp IP \n      address to be used for several HTTP based services that use 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"
      },
        "title": "AppPkgInfo",
        "required": [
          "id",
          "appDId",
          "appName",
          "appSoftwareVersion",
          "appDVersion",
          "checksum",
          "softwareImages",
          "onboardingState",
          "operationalState",
          "usageState",
        "type": "object",
            "type": "string",
            "description": "Identifier of the onboarded application package."
            "type": "string",
            "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique."
            "type": "string",
            "description": "Provider of the application and of the AppD."
            "type": "string",
            "description": "Name to identify the MEC application."
            "type": "string",
            "description": "Software version of the application. This is updated when there is any change to the software in the onboarded application package."
            "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."
          },
            "description": "Information of application software image in application package. Type is TBD. See note 1.",
            "type": "array",
            "items": {
              "type": "string",
              "format": "not-specified"
            }
            "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"
          },
            "$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": ["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"]
        "title": "OnboardingState",
        "enum": ["CREATED", "UPLOADING", "PROCESSING", "ONBOARDED"],
        "type": "string",
        "description": "Onboarding state of application package",
        "examples": ["CREATED"]
        "title": "UsageState",
        "enum": ["IN_USE", "NOT_IN_USE"],
        "type": "string",
        "description": "Usage state of the onboarded instance of the application package",
        "examples": ["IN_USE"]
        "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."
        "title": "AppPkgNotification",
        "required": [
          "id",
          "notificationType",
          "subscriptionId",
          "timeStamp",
          "appPkgId",
          "appDId",
          "operationalState",
          "_links"
        ],
        "type": "object",
            "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."
            "type": "string",
            "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique."
            "$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",
            "type": "string",
            "description": "Identifier of the subscription to application package notification."
            "description": "Type of subscription.",
            "$ref": "#/components/schemas/AppPkgSubscriptionType"
            "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",
          "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",
            "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.'"
        "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": {
            "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"]
        },
        "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"
        "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."
            "type": "string",
            "description": "'String 1 The hexadecimal value of the checksum'"
        "title": "CreateAppPkg",
        "required": ["appPkgName", "appPkgPath", "appPkgVersion", "checksum"],
        "type": "object",
        "properties": {
          "appPkgName": {
            "type": "string",
            "description": "Name of the application package to be onboarded."
            "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"
      "KeyValuePairs": {
        "type": "object",
        "additionalProperties": {
          "type": "object"
        }
      },
      "LinkType": {
        "title": "LinkType",
        "required": ["href"],
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "description": "URI referring to a resource"
        "title": "ProblemDetails",
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem"
            "description": "A URI reference that identifies the specific occurrence of the problem"
            "description": "The HTTP status code for this occurrence of the problem",
            "format": "int32"
            "description": "A short, human-readable summary of the problem type"
            "description": "A URI reference according to IETF RFC 3986 that identifies the problem type"
        "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"
            "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",
        "enum": ["DISABLED", "ENABLED"],
        "type": "string",
        "examples": ["DISABLED"]
      "OperationState": {
        "title": "OperationState",
        "enum": ["DISABLED", "ENABLED"],
        "type": "string",
        "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": [{}]
Muhammad Hamza's avatar
Muhammad Hamza committed
}