MEC010-2_AppPkgMgmt.json 94.6 KB
Newer Older
            "description": "Specifies requirements on a virtual network interface realizing the CPs instantiated from this CPD."
        "title": "AppPkgInfo",
        "required": [
          "id",
          "appDId",
          "appName",
          "appSoftwareVersion",
          "appDVersion",
          "checksum",
          "softwareImages",
          "onboardingState",
          "operationalState",
          "usageState",
          "_links"
        ],
        "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"
          },
          "softwareImages": {
            "type": "object",
            "description": "Information of application software image in application package. Type is TBD"
            "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"
          },
          "userDefinedData": {
            "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'"
          },
          "_links": {
            "$ref": "#/components/schemas/AppPkgInfo.links"
          }
        },
        "description": "'The data type AppPkgInfo represents the parameters for an application package resource'"
      },
      "AppPkgInfoModifications": {
        "title": "AppPkgInfoModifications",
        "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",
        ],
        "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",
        ],
        "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"
          }
        },
        "description": "Links to resources related to this resource."
        "title": "AppPkgNotification",
        "required": [
          "id",
          "notificationType",
          "subscriptionId",
          "timeStamp",
          "appPkgId",
          "appDId",
          "operationalState",
          "_links"
        ],
        "type": "object",
            "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."
            "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"
        "title": "AppPkgNotification.links",
        "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": "''"
          },
          "subscriptionType": {
            "$ref": "#/components/schemas/AppPkg.SubscriptionType"
          },
          "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'"
      },
      "AppPkg.SubscriptionType": {
        "title": "AppPkg.SubscriptionType",
        "enum": [
          "AppPackageOnBoarding",
          "AppPacakgeOperationChange",
          "AppPackageDeletion"
        ],
        "type": "string",
        "description": "Subscribed notification type.",
        "examples": [
          "AppPackageOnBoarding"
        ]
      },
      "AppPkgSubscriptionInfo.links": {
        "title": "AppPkgSubscriptionInfo.links",
        "type": "object",
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          }
        },
        "description": "Links to resources related to this resource."
      },
      "AppPkgSubscriptionLinkList": {
        "title": "AppPkgSubscriptionLinkList",
        "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",
        "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",
          "subsctiptionType"
        ],
        "type": "object",
            "type": "string",
            "description": "The URI referring to the subscription."
          },
          "subsctiptionType": {
            "$ref": "#/components/schemas/SubsctiptionType.AppPkg"
          }
        },
        "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",
          "subsctiptionType"
        ],
        "type": "object",
        "properties": {
          "callbackUri": {
            "type": "string",
            "description": "The URI of the endpoint for the notification to be sent to."
          },
          "subsctiptionType": {
            "$ref": "#/components/schemas/SubsctiptionType.AppPkg"
          },
          "appPkgFilter": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": ""
        },
        "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.'"
      },
      "SubsctiptionType.AppPkg": {
        "title": "SubsctiptionType.AppPkg",
        "enum": [
          "AppPackageOnBoarding",
          "AppPacakgeOperationChange",
          "AppPackageDeletion"
        "description": "'Subscribed notification type'",
        "examples": [
          "AppPackageOnBoarding"
        ]
        "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"
          },
          "appPkgVersion": {
            "type": "string",
            "description": "Version of the application package to be onboarded.\nThe 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": {
            "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'"
        }
      },
      "DNSRuleDescriptor": {
        "title": "DNSRuleDescriptor",
          "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": "#/components/schemas/IpAddressType"
          },
          "ttl": {
            "type": "integer",
            "description": "Time-to-live value",
            "contentEncoding": "int32"
        "title": "IpAddressType",
        ],
        "type": "string",
        "description": "Specifies the IP address type",
        "examples": [
          "IP_V6"
        "title": "FeatureDependency",
        "required": [
          "featureName",
          "version"
        ],
        "type": "object",
        "properties": {
          "featureName": {
            "type": "string",
            "description": "The name of the feature, for example, UserApps, UEIdentity, etc."
            "description": "The version of the feature."
        }
      },
      "InterfaceDescriptor": {
        "title": "InterfaceDescriptor",
          "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": "#/components/schemas/InterfaceType"
          },
          "srcMACAddress": {
            "type": "string",
            "description": "If the interface type is MAC, the source address identifies the MAC address of the interface."
          },
          "tunnelInfo": {
            "$ref": "#/components/schemas/TunnelInfo"
        "title": "InterfaceType",
        ],
        "type": "string",
        "description": "Type of interface.",
        "examples": [
          "TUNNEL"
        "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"
        }
      },
      "LinkType": {
        "title": "LinkType",
          "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",
            "contentEncoding": "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": "ServiceDependency",
        "required": [
          "serName",
          "version"
        ],
        "type": "object",
        "properties": {
          "requestedPermissions": {
            "minItems": 0,
            "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 [4].\nThe format of this attribute is left for the data model design stage."
            "type": "object",
            "description": "See MEC011"
            "description": "The name of the service, for example, RNIS, LocationService, etc."
          },
          "serTransportDependencies": {
            "minItems": 0,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransportDependency"
            },
            "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note."
            "description": "The version of the service."
        "title": "ServiceDescriptor",
        "type": "object",
            "type": "string",
            "description": "The name of the service, for example, RNIS, LocationService, etc."
            "type": "object",
            "description": "See MEC011"
            "type": "string",
            "description": "The version of the service."
          },
          "transportsSupported": {
            "$ref": "#/components/schemas/TransportsSupported"
          }
        },
        "description": "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'"
        "title": "TransportsSupported",
        "type": "object",
        "properties": {
          "transport": {
            "$ref": "#/components/schemas/TransportDescriptor"
          },
          "serializers": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "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.'"
        "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"
            "description": "The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.",
            "contentEncoding": "int32"
        "title": "TrafficFilter",
        "type": "object",
        "properties": {
          "dSCP": {
            "type": "integer",
            "description": "Used to match all IPv4 packets that have the same DSCP.",
            "contentEncoding": "int32"
            "minItems": 0,
            "type": "array",
            "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."
            "minItems": 0,
            "type": "array",
            "description": "A port or a range of ports."
            "minItems": 0,
            "type": "array",
            "description": "Used for GTP tunnel based traffic rule."
            "minItems": 0,
            "type": "array",
            "description": "Specify the protocol of the traffic filter."
            "description": "Used to match all packets that have the same QCI.",
            "contentEncoding": "int32"
            "minItems": 0,
            "type": "array",
            "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."
            "minItems": 0,
            "type": "array",
            "description": "A port or a range of ports."
            "minItems": 0,
            "type": "array",
            "description": "Used for GTP tunnel based traffic rule."
            "minItems": 0,
            "type": "array",
            "description": "Used for GTP tunnel based traffic rule."
            "description": "Used to match all IPv6 packets that have the same TC.",
            "contentEncoding": "int32"
            "minItems": 0,
            "type": "array",
            "description": "Used for tag based traffic rule."
            "minItems": 0,
            "type": "array",
            "description": "Used for GTP tunnel based traffic rule."
        "title": "TrafficRuleDescriptor",
        "required": [
          "action",
          "filterType",
          "priority",
          "trafficFilter",
          "trafficRuleId"
        ],
        "type": "object",
        "properties": {
          "action": {
            "$ref": "#/components/schemas/Action"
          },
          "dstInterface": {
            "maxItems": 2,
            "minItems": 0,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InterfaceDescriptor"
            },
            "description": ""
          },
          "filterType": {
            "$ref": "#/components/schemas/FilterType"
          },
          "priority": {
            "type": "integer",
            "description": "Priority of this traffic rule. If traffic rule conflicts, the one with higher priority take precedence.",
            "contentEncoding": "int32"
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficFilter"
            },
            "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."
        "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"
        "title": "FilterType",
        ],
        "type": "string",
        "description": "Definition of filter type: per FLOW or PACKET",
        "examples": [
          "FLOW"
        "title": "TransportDependency",
        "required": [
          "labels",
          "serializers",
          "transport"
        ],
        "type": "object",
            "minItems": 1,
            "type": "array",
            "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table."
          "serializers": {
            "minItems": 1,
            "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."
          "transport": {
            "$ref": "#/components/schemas/TransportDescriptor"
          }
        }
      },
      "TransportDescriptor": {
        "title": "TransportDescriptor",
          "protocol",
          "security",
          "type",
          "version"
        ],
        "type": "object",
        "properties": {
          "protocol": {
            "type": "string",
            "description": "The name of the protocol used. Shall be set to HTTP for a REST API."
            "type": "object",
            "description": "See MEC011"
            "type": "string"
          "version": {
            "type": "string",
            "description": "The version of the protocol used."
        }
      },
      "TunnelInfo": {
        "title": "TunnelInfo",
          "tunnelDstAddress",
          "tunnelSrcAddress",
          "tunnelType"
        ],
        "type": "object",
        "properties": {
          "tunnelDstAddress": {
            "type": "string",
            "description": "Destination address of the tunnel."
            "type": "string"
          },
          "tunnelSrcAddress": {
            "type": "string",
            "description": "Source address of the tunnel."
          },
          "tunnelType": {
            "$ref": "#/components/schemas/TunnelType"
          }
        "title": "TunnelType",
        ],
        "type": "string",
        "description": "Type of tunnel.",
        "examples": [
          "GTP-U"
      "OperationalState": {
        "title": "OperationalState",
        "enum": [
          "DISABLED",
          "ENABLED"
        ],
        "type": "string",
        "examples": [
          "DISABLED"
        ]
      "OperationState": {
        "title": "OperationState",
        "enum": [
          "DISABLED",
          "ENABLED"
        ],
        "type": "string",
        "examples": [
          "DISABLED"
        ]
  },
  "security": [
    {}
  ]