MEC010-2_AppPkgMgmt.json 103 KB
Newer Older
            "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.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "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.",
            "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.",
            "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",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "deprecated": false
      },
    },
    "/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.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "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.",
            "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.",
            "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.",
            "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.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "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.",
            "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.",
            "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",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "deprecated": false
      },
    },
    "/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",
        "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.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "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.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "deprecated": false
      },
        "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."
            "type": "array",
              "$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."
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppExternalCpd"
            },
            "description": "Describes external interface(s) exposed by this MEC application."
            "type": "array",
              "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/FeatureDependency"
            "description": "Describes features a MEC application may use if available."
            "type": "array",
              "$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."
            "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/LatencyDescriptor"
            "description": "Name to identify the MEC application."
          },
          "appProvider": {
            "type": "string",
            "description": "Provider of the application and of the AppD."
            "type": "array",
              "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/ServiceDependency"
            "description": "Describes services a MEC application may use if available."
            "type": "array",
              "$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."
            "type": "array",
              "$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."
            "type": "array",
              "$ref": "./definitions/MEC010p2_definitions.yaml#/definitions/TrafficRuleDescriptor"
            "description": "Describes traffic rules the MEC application requires."
          },
          "changeAppInstanceStateOpConfig": {
            "type": "string",
            "description": "NFV"
            "type": "array",
            "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 <x>.<y>.<z> where <x>, <y> and <z> are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation."
            "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"
            "type": "array",
              "$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",
          "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."
        "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."
          },
            "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"
          },
          "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'"
          },
          "_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"
          },
          "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": "''"
          },
          "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": "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",
        "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",
          "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",
          "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"
            ]
          }
        }
        "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",