From 1dda5943cdab1e034773132632abcc378f0f00bc Mon Sep 17 00:00:00 2001 From: piscione Date: Tue, 15 Feb 2022 11:02:39 +0100 Subject: [PATCH 1/3] Updated MEC010p2 OAS from v2.1.1 to v2.1.1 --- MEC010-2_AppGrant.json | 29 +- MEC010-2_AppGrant.yaml | 27 +- MEC010-2_AppLcm.json | 1178 ++++++++++++++---- MEC010-2_AppLcm.yaml | 916 ++++++++++---- MEC010-2_AppPkgMgmt.json | 2053 +++++++++++++++++--------------- MEC010-2_AppPkgMgmt.yaml | 932 ++++++++------- MEC010p2_v221_definitions.json | 590 +++++++++ MEC010p2_v221_definitions.yaml | 426 +++++++ 8 files changed, 4314 insertions(+), 1837 deletions(-) create mode 100644 MEC010p2_v221_definitions.json create mode 100644 MEC010p2_v221_definitions.yaml diff --git a/MEC010-2_AppGrant.json b/MEC010-2_AppGrant.json index e4ffcfc..97dbc87 100644 --- a/MEC010-2_AppGrant.json +++ b/MEC010-2_AppGrant.json @@ -3,7 +3,7 @@ "info": { "title": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management", "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.", - "version": "2.1.1", + "version": "2.2.1", "license": { "name": "BSD-3-Clause", "url": "https://forge.etsi.org/legal-matters" @@ -15,8 +15,8 @@ } }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.1.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" }, "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "servers": [ @@ -259,7 +259,6 @@ "description": "Identifier of the external CP instance to which this set of configuration parameters is requested to be applied. \n\nShall be present if this instance has already been created." }, "cpProtocolData": { - "minItems": 0, "type": "array", "items": { "$ref": "#/components/schemas/CpProtocolData" @@ -281,7 +280,6 @@ "type": "object", "properties": { "cpConfig": { - "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/AppExtCpConfig" @@ -350,7 +348,6 @@ "type": "object", "properties": { "extCps": { - "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/AppExtCpData" @@ -358,7 +355,6 @@ "description": "External CPs of the application instance to be connected to this external VL." }, "extLinkPorts": { - "minItems": 0, "type": "array", "items": { "$ref": "#/components/schemas/ExtLinkPortData" @@ -390,22 +386,23 @@ "type": "object", "properties": { "id": { - "type": "string" + "type": "string", + "description": "Identifier of the Grant." }, "appInstanceId": { "type": "string", - "description": "Identifier of application instance." + "description": "Identifier of the application instance which this Grant is related to." }, "appLcmOpOccId": { "type": "string", - "description": "Identifier of application lifecycle management operation occurrence." + "description": "The identifier of the application lifecycle management operation occurrence associated to the Grant." }, "vimConnections": { "type": "array", + "description": "Provides information regarding VIM connections that are approved to be used by the MEPM to allocate resources, and provides parameters of these VIM connections.", "items": { "$ref": "#/components/schemas/VimConnectionInfo" - }, - "description": "" + } }, "zones": { "type": "array", @@ -763,7 +760,7 @@ }, "resourceTemplateId": { "type": "string", - "description": "Reference to a resource template, i.e. VirtualLinkDesc, VirtualComputeDesc, AppExtCpd, VirtualStorageDesc in the AppD." + "description": "Reference to a resource template, i.e. VirtualComputeDescriptor, AppExtCpd, VirtualStorageDescriptor in the AppD." }, "resource": { "$ref": "#/components/schemas/Resource" @@ -874,7 +871,6 @@ "type": "object", "properties": { "zoneId": { - "minItems": 1, "type": "array", "items": { "type": "string" @@ -893,10 +889,11 @@ "properties": { "id": { "type": "string", - "description": "The identifier of this ZoneInfo instance, for the purpose of referencing it from other structures in the \"Grant\" structure." + "description": "Identifier of the connection to the VIM that manages the resource zone. The applicable \"VimConnectionInfo\" structure, which is referenced by vimConnectionId, can be obtained from the \" vimConnectionInfo\" attribute of the \"AppInstanceInfo\" structure." }, "vimConnectionId": { - "type": "string" + "type": "string", + "description": null }, "zoneId": { "type": "string", diff --git a/MEC010-2_AppGrant.yaml b/MEC010-2_AppGrant.yaml index 8b3bb78..134f518 100644 --- a/MEC010-2_AppGrant.yaml +++ b/MEC010-2_AppGrant.yaml @@ -2,7 +2,7 @@ openapi: 3.1.0 info: title: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management' description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management described using OpenAPI.' - version: '2.1.1' + version: '2.2.1' license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters @@ -11,8 +11,8 @@ info: url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org externalDocs: - description: "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.1.1" - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf' + description: "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1" + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema servers: - url: https://localhost/granting/v1 @@ -173,7 +173,6 @@ components: type: string description: "Identifier of the external CP instance to which this set of configuration parameters is requested to be applied. \n\nShall be present if this instance has already been created." cpProtocolData: - minItems: 0 type: array items: $ref: '#/components/schemas/CpProtocolData' @@ -189,7 +188,6 @@ components: type: object properties: cpConfig: - minItems: 1 type: array items: $ref: '#/components/schemas/AppExtCpConfig' @@ -239,13 +237,11 @@ components: type: object properties: extCps: - minItems: 1 type: array items: $ref: '#/components/schemas/AppExtCpData' description: External CPs of the application instance to be connected to this external VL. extLinkPorts: - minItems: 0 type: array items: $ref: '#/components/schemas/ExtLinkPortData' @@ -270,17 +266,18 @@ components: properties: id: type: string + description: Identifier of the Grant. appInstanceId: type: string - description: Identifier of application instance. + description: Identifier of the application instance which this Grant is related to. appLcmOpOccId: type: string - description: Identifier of application lifecycle management operation occurrence. + description: The identifier of the application lifecycle management operation occurrence associated to the Grant. vimConnections: type: array + description: Provides information regarding VIM connections that are approved to be used by the MEPM to allocate resources, and provides parameters of these VIM connections. items: - $ref: '#/components/schemas/VimConnectionInfo' - description: '' + $ref: '#/components/schemas/VimConnectionInfo' zones: type: array items: @@ -540,7 +537,7 @@ components: description: Reference to the related VDU in the AppD applicable to this resource. resourceTemplateId: type: string - description: Reference to a resource template, i.e. VirtualLinkDesc, VirtualComputeDesc, AppExtCpd, VirtualStorageDesc in the AppD. + description: Reference to a resource template, i.e. VirtualComputeDescriptor, AppExtCpd, VirtualStorageDescriptor in the AppD. resource: $ref: '#/components/schemas/Resource' description: "'This type provides information of an existing or proposed resource used by the application. Refer to clause 9.5.3.2 of ETSI GS NFV-SOL 003 '" @@ -620,7 +617,6 @@ components: type: object properties: zoneId: - minItems: 1 type: array items: type: string @@ -634,9 +630,10 @@ components: properties: id: type: string - description: The identifier of this ZoneInfo instance, for the purpose of referencing it from other structures in the "Grant" structure. - vimConnectionId: + description: Identifier of the connection to the VIM that manages the resource zone. The applicable "VimConnectionInfo" structure, which is referenced by vimConnectionId, can be obtained from the " vimConnectionInfo" attribute of the "AppInstanceInfo" structure. + vimConnectionId: type: string + description: zoneId: type: string description: The identifier of the resource zone, as managed by the resource management layer (typically, the VIM). diff --git a/MEC010-2_AppLcm.json b/MEC010-2_AppLcm.json index 60abe05..6cea223 100644 --- a/MEC010-2_AppLcm.json +++ b/MEC010-2_AppLcm.json @@ -12,11 +12,11 @@ "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", "email": "cti_support@etsi.org" }, - "version": "2.1.1" + "version": "2.2.1" }, "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.1.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" }, "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "tags": [ @@ -497,29 +497,9 @@ "tags": [ "app-lcm-notifications" ], - "summary": "subscribe to the notification of application instance operational state change", - "description": "subscribe to the notification of application instance operational state change", + "summary": "subscribe to the notification of application instance related change", + "description": "subscribe to the notification of application instance related change", "operationId": "appLcmSubscriptionsPOST", - "parameters": [ - { - "name": "subscriptionType", - "in": "query", - "description": "\"Query parameter to filter on a specific subscription type. Permitted values:\n • \"AppInstanceStateChange\"\n • \"AppLcmOpOccStateChange\"\n\"", - "required": true, - "style": "form", - "explode": true, - "schema": { - "oneOf": [ - { - "$ref": "#/components/schemas/AppInst.SubscriptionType" - }, - { - "$ref": "#/components/schemas/AppLcmOpOcc.SubscriptionType" - } - ] - } - } - ], "requestBody": { "description": "", "content": { @@ -531,6 +511,12 @@ }, { "$ref": "#/components/schemas/AppLcmOpOccSubscriptionRequest" + }, + { + "$ref": "#/components/schemas/AppInstIdCreationSubscriptionRequest" + }, + { + "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionRequest" } ], "contentMediaType": "application/json" @@ -552,6 +538,12 @@ }, { "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo" + }, + { + "$ref": "#/components/schemas/AppInstIdCreationSubscriptionInfo" + }, + { + "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionInfo" } ], "contentMediaType": "application/json" @@ -673,11 +665,11 @@ { "name": "subscriptionType", "in": "query", - "description": "Permitted values: AppInstanceStateChange or AppLcmOpOccStateChange", + "description": "Query parameter to filter on a specific subscription type.", "style": "form", "explode": true, "schema": { - "type": "string" + "$ref": "#/components/schemas/AppInstanceSubscriptionType" } } ], @@ -688,7 +680,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SubscriptionLinkList" + "$ref": "#/components/schemas/AppInstanceSubscriptionLinkList" } } } @@ -782,17 +774,6 @@ "schema": { "type": "string" } - }, - { - "name": "subscriptionType", - "in": "query", - "description": "Permitted values: AppInstanceStateChange or AppLcmOpOccStateChange", - "required": true, - "style": "form", - "explode": true, - "schema": { - "type": "string" - } } ], "responses": { @@ -808,6 +789,12 @@ }, { "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo" + }, + { + "$ref": "#/components/schemas/AppInstIdCreationSubscriptionInfo" + }, + { + "$ref": "#/components/schemas/AppInstIdDeletionSubscriptionInfo" } ], "contentMediaType": "application/json" @@ -978,6 +965,12 @@ }, { "$ref": "#/components/schemas/AppLcmOpOccNotification" + }, + { + "$ref": "#/components/schemas/AppInstanceIdentifierCreationNotification" + }, + { + "$ref": "#/components/schemas/AppInstanceIdentifierDeletionNotification" } ], "contentMediaType": "application/json" @@ -1441,7 +1434,7 @@ { "name": "fields", "in": "query", - "description": "Complex attributes of AppPkgInfo to be included into the response", + "description": "Complex attributes of AppLcmOpOcc to be excluded from the response.", "style": "form", "explode": true, "schema": { @@ -1451,7 +1444,7 @@ { "name": "exclude_fields", "in": "query", - "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "description": "Complex attributes of AppLcmOpOcc to be excluded from the response.", "style": "form", "explode": true, "schema": { @@ -1461,7 +1454,7 @@ { "name": "exclude_default", "in": "query", - "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "description": "Indicates to exclude the following complex attributes of AppLcmOpOcc from the response.", "style": "form", "explode": true, "schema": { @@ -1478,7 +1471,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/AppInstanceLcmOpOcc" + "$ref": "#/components/schemas/AppLcmOpOcc" }, "description": "", "contentMediaType": "application/json" @@ -1584,7 +1577,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppInstanceLcmOpOcc" + "$ref": "#/components/schemas/AppLcmOpOcc" } } } @@ -1659,126 +1652,709 @@ "deprecated": false }, "parameters": [] - } - }, - "components": { - "schemas": { - "AppInstanceLcmOpOcc": { - "title": "AppInstanceLcmOpOcc", - "required": [ - "id", - "operationState", - "stateEnteredTime", - "startTime", - "lcmOperation", - "_links" + }, + "/app_lcm_op_occs/{appLcmOpOccId}/cancel": { + "post": { + "tags": [ + "app-lcm" ], - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "'Identifier of the subscription to application LCM operation occurrence notification'" + "summary": "cancel an ongoing application lifecycle operation whose related \"Individual application LCM operation occurrence\" resource is in \"PROCESSING\" state.", + "description": "cancel an ongoing application lifecycle operation whose related \"Individual application LCM operation occurrence\" resource is in \"PROCESSING\" state.", + "operationId": "appLcmCancelPOST", + "parameters": [ + { + "name": "appLcmOpOccId", + "in": "path", + "description": "Identifies an individual application LCM operation occurrence", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CancelMode" + } + } }, - "operationState": { - "$ref": "#/components/schemas/OperationState" + "required": true + }, + "responses": { + "202": { + "description": "The request was accepted for processing, but it is possible that the processing is not yet completed.", + "headers": {}, + "content": {} }, - "stateEnteredTime": { - "$ref": "#/components/schemas/TimeStamp" + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } }, - "startTime": { - "$ref": "#/components/schemas/TimeStamp" + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } }, - "lcmOperation": { - "$ref": "#/components/schemas/LcmOperation" + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } }, - "operationParams": { - "$ref": "#/components/schemas/OperationParams" + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } }, - "_links": { - "$ref": "#/components/schemas/AppInstanceLcmOpOcc.links" - } - }, - "description": "'This data type represents an application lifecycle management operation occurrence'" - }, - "OperationParams": { - "title": "OperationParams", - "enum": [ - "INSTANTIATE", - "OPERATE", - "TERMINATE" - ], - "type": "string", - "description": "'Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation.'", - "examples": [ - "INSTANTIATE" - ] - }, - "AppInstanceLcmOpOcc.links": { - "title": "AppInstanceLcmOpOcc.links", - "required": [ - "self", - "appInstance" - ], - "type": "object", - "properties": { - "self": { - "$ref": "#/components/schemas/LinkType" + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } }, - "appInstance": { - "$ref": "#/components/schemas/LinkType" - } - }, - "description": "Links to resources related to this resource." - }, - "SubscriptionLinkList": { - "title": "SubscriptionLinkList", - "required": [ - "_links" - ], - "type": "object", - "properties": { - "_links": { - "$ref": "#/components/schemas/SubscriptionLinkList.links" + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } } }, - "description": "'The data type represents a subscription link list of notification on application lifecycle management. '" + "deprecated": false }, - "SubscriptionLinkList.links": { - "title": "SubscriptionLinkList.links", - "required": [ - "self" + "parameters": [] + }, + "/app_lcm_op_occs/{appLcmOpOccId}/fail": { + "post": { + "tags": [ + "app-lcm" ], - "type": "object", - "properties": { - "self": { - "$ref": "#/components/schemas/LinkType" - }, - "subscriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SubscriptionLinkList.links.subscriptions" - }, - "description": "" + "summary": "marks an application lifecycle management operation occurrence as \"finally failed\"", + "description": "marks an application lifecycle management operation occurrence as \"finally failed\"", + "operationId": "appLcmFailPOST", + "parameters": [ + { + "name": "appLcmOpOccId", + "in": "path", + "description": "Identifies an individual application LCM operation occurrence", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } } - }, - "description": "Links to resources related to this resource." - }, - "SubscriptionLinkList.links.subscriptions": { - "title": "SubscriptionLinkList.links.subscriptions", - "required": [ - "href", - "subscriptionType" ], - "type": "object", - "properties": { - "href": { - "type": "string" + "responses": { + "202": { + "description": "Shall be returned when the state of the application lifecycle management operation occurrence has been changed successfully", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppLcmOpOcc" + } + } + } }, - "subscriptionType": { - "$ref": "#/components/schemas/SubscriptionType" + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/app_lcm_op_occs/{appLcmOpOccId}/retry": { + "post": { + "tags": [ + "app-lcm" + ], + "summary": "initiate retrying an application lifecycle operation that has experience a temporary failure", + "description": "initiate retrying an application lifecycle operation that has experience a temporary failure", + "operationId": "appLcmRetryPOST", + "parameters": [ + { + "name": "appLcmOpOccId", + "in": "path", + "description": "Identifies an individual application LCM operation occurrence", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "responses": { + "202": { + "description": "The request was accepted for processing, but it is possible that the processing is not yet completed", + "headers": {}, + "content": {} + }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/app_instances/{appInstanceId}/configure_platform_for_app": { + "post": { + "tags": [ + "app-lcm" + ], + "summary": "provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance.", + "description": "provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance.", + "operationId": "appInstancesConfigPlatformPOST", + "parameters": [ + { + "name": "appInstanceId", + "in": "path", + "description": "The identifier of the application instance.", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "The payload body in the request contains the information necessary to provide configuration information in AppD", + "content": { + "application/json": { + "schema": { + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/ConfigPlatformForAppRequest" + } + } + } + }, + "responses": { + "202": { + "description": "The request was accepted for processing, but it is possible that the processing is not yet completed", + "headers": {}, + "content": {} + }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "parameters": [] + } + }, + "components": { + "schemas": { + "AppLcmOpOcc": { + "title": "AppLcmOpOcc", + "required": [ + "id", + "operationState", + "stateEnteredTime", + "startTime", + "lcmOperation", + "_links" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "'Identifier of the subscription to application LCM operation occurrence notification'" + }, + "operationState": { + "$ref": "#/components/schemas/OperationState" + }, + "stateEnteredTime": { + "$ref": "#/components/schemas/TimeStamp" + }, + "startTime": { + "$ref": "#/components/schemas/TimeStamp" + }, + "lcmOperation": { + "$ref": "#/components/schemas/LcmOperation" + }, + "operationParams": { + "$ref": "#/components/schemas/OperationParams" + }, + "isCancelPending": { + "type": "boolean", + "description": "If the application LCM operation occurrence operationState is in \"PROCESSING\" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false." + }, + "cancelMode": { + "$ref": "#/components/schemas/CancelMode" + }, + "_links": { + "$ref": "#/components/schemas/AppInstanceLcmOpOcc.links" + } + }, + "description": "'This data type represents an application lifecycle management operation occurrence'" + }, + "AppInstanceSubscriptionLinkList": { + "required": [ + "_links" + ], + "properties": { + "_links": { + "$ref": "#/components/schemas/AppInstanceSubscriptionLinkList._links" + } + } + }, + "AppInstanceSubscriptionLinkList._links": { + "required": [ + "self" + ], + "type": "object", + "properties": { + "self": { + "type": "string", + "description": "URI referring to a resource" + }, + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppInstanceSubscriptionLinkList._links.subscriptions" + } + } + } + }, + "AppInstanceSubscriptionLinkList._links.subscriptions": { + "type": "object", + "required": [ + "href", + "subscriptionType" + ], + "properties": { + "href": { + "type": "uri" + }, + "subscriptionType": { + "$ref": "#/components/schemas/AppInstanceSubscriptionType" + } + } + }, + "AppInstanceSubscriptionType": { + "type": "string", + "description": "String representing the type of a subscription.", + "enum": [ + "AppInstanceStateChangeSubscription", + "AppLcmOpOccStateChangeSubscription", + "AppIdentifierCreationSubscription", + "AppIdentifierDeletionSubscription" + ] + }, + "OperationParams": { + "oneOf": [ + { + "$ref": "#/components/schemas/InstantiateAppRequest" + }, + { + "$ref": "#/components/schemas/OperateAppRequest" + }, + { + "$ref": "#/components/schemas/TerminateAppRequest" + } + ] + }, + "CancelMode": { + "description": "Indicates the intervention action to be taken. GRACEFUL Indicates ongoing resource management operations in the underlying system are allowed to complete execution or time out. FORCED Indicates ongoing resource management operations in the underlying system are to be cancelled without allowing them to complete execution or time out.", + "type": "string", + "enum": [ + "GRACEFUL", + "FORCED" + ] + }, + "AppInstIdCreationSubscriptionRequest": { + "type": "object", + "required": [ + "subscriptionType", + "callbackUri" + ], + "properties": { + "subscriptionType": { + "type": "string" + }, + "callbackUri": { + "type": "uri" + }, + "appInstanceSubscriptionFilter": { + "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" + } + } + }, + "AppInstIdDeletionSubscriptionRequest": { + "type": "object", + "required": [ + "subscriptionType", + "callbackUri" + ], + "properties": { + "subscriptionType": { + "type": "string", + "description": "Shall be set to \"AppIdentifierDeletionSubscription\"." + }, + "callbackUri": { + "type": "uri" + }, + "appInstanceSubscriptionFilter": { + "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" + } + } + }, + "AppInstIdCreationSubscriptionInfo": { + "type": "object", + "required": [ + "id", + "subscriptionType", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "type": "string" + }, + "subscriptionType": { + "type": "string" + }, + "callbackUri": { + "type": "uri" + }, + "appInstanceSubscriptionFilter": { + "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" + }, + "_links": { + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + } + } + } + } + }, + "AppInstIdDeletionSubscriptionInfo": { + "type": "object", + "required": [ + "id", + "subscriptionType", + "callbackUri", + "_links" + ], + "properties": { + "id": { + "type": "string" + }, + "subscriptionType": { + "type": "string", + "description": "Shall be set to \"AppIdentifierDeletionSubscription\"." + }, + "callbackUri": { + "type": "uri" + }, + "appInstanceSubscriptionFilter": { + "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" + }, + "_links": { + "type": "object", + "required": [ + "self" + ], + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + } + } + } + } + }, + "AppInstanceLcmOpOcc.links": { + "title": "AppInstanceLcmOpOcc.links", + "required": [ + "self", + "appInstance" + ], + "type": "object", + "properties": { + "self": { + "$ref": "#/components/schemas/LinkType" + }, + "appInstance": { + "$ref": "#/components/schemas/LinkType" } }, - "description": "A link list to the subscriptions" + "description": "Links to resources related to this resource." }, "AppLcmOpOccSubscriptionInfo": { "title": "AppLcmOpOccSubscriptionInfo", @@ -1792,12 +2368,12 @@ "properties": { "id": { "type": "string", - "description": "''" + "description": "Identifier of this subscription resource." }, "subscriptionType": { "const": "AppLcmOpOccStateChange", "type": "string", - "description": "Shall be set to AppLcmOpOccStateChange.", + "description": "Shall be set to \"AppLcmOpOccStateChangeSubscription\".", "examples": [ "AppLcmOpOccStateChange" ] @@ -1806,21 +2382,16 @@ "type": "string", "description": "The URI of the endpoint for the notification to be sent to." }, + "appLcmOpOccSubscriptionFilter": { + "$ref": "#/components/schemas/AppLcmOpOccSubscriptionFilter", + "description": "Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription." + }, "_links": { "$ref": "#/components/schemas/AppLcmOpOccSubscriptionInfo.links" } }, "description": "'This data type represents a subscription to notifications of application life cycle management operation occurrence'" }, - "AppLcmOpOcc.SubscriptionType": { - "title": "AppLcmOpOcc.SubscriptionType", - "const": "AppLcmOpOccStateChange", - "type": "string", - "description": "Shall be set to AppLcmOpOccStateChange.", - "examples": [ - "AppLcmOpOccStateChange" - ] - }, "AppLcmOpOccSubscriptionInfo.links": { "title": "AppLcmOpOccSubscriptionInfo.links", "required": [ @@ -1839,7 +2410,6 @@ "required": [ "id", "subscriptionType", - "notificationType", "callbackUri", "_links" ], @@ -1852,17 +2422,25 @@ "subscriptionType": { "const": "AppInstanceStateChange", "type": "string", - "description": "Shall be set to AppInstanceStateChange.", + "description": "Shall be set to \"AppInstanceStateChangeSubscription\".", "examples": [ - "AppInstanceStateChange" + "AppInstanceStateChangeSubscription" ] }, - "notificationType": { - "$ref": "#/components/schemas/AppInst.NotificationType" + "appInstanceState": { + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "STARTED", + "STOPPED" + ] + }, + "appInstanceSubscriptionFilter": { + "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" }, "callbackUri": { "type": "string", - "description": "The URI of the endpoint for the notification to be sent to." + "description": "The URI of the endpoint for the subscription related notification to be sent to." }, "_links": { "$ref": "#/components/schemas/AppInstSubscriptionInfo.links" @@ -1870,28 +2448,6 @@ }, "description": "'The data type represents a subscription to notification of application instance operational state change.'" }, - "AppInst.SubscriptionType": { - "title": "AppInst.SubscriptionType", - "const": "AppInstanceStateChange", - "type": "string", - "description": "Shall be set to AppInstanceStateChange.", - "examples": [ - "AppInstanceStateChange" - ] - }, - "AppInst.NotificationType": { - "title": "AppInst.NotificationType", - "enum": [ - "NOT_INSTANTIATED", - "STARTED", - "STOPPED" - ], - "type": "string", - "description": "Subscribed notification", - "examples": [ - "NOT_INSTANTIATED" - ] - }, "AppInstSubscriptionInfo.links": { "title": "AppInstSubscriptionInfo.links", "required": [ @@ -1921,7 +2477,7 @@ }, "subscriptionType": { "type": "string", - "description": "Shall be set to \"AppLcmOpOccStateChange\"." + "description": "Shall be set to \"AppLcmOpOccStateChangeSubscription\"." } } }, @@ -1933,6 +2489,7 @@ "$ref": "#/components/schemas/AppInstanceSubscriptionFilter" }, "notificationTypes": { + "description": "Match particular notification types. Permitted values AppLcmOpOccNotification.", "$ref": "#/components/schemas/NotificationTypes" }, "operationStates": { @@ -1958,7 +2515,8 @@ "STARTING", "PROCESSING", "COMPLETED", - "FAILED" + "FAILED", + "FAILED_TEMP" ], "type": "string", "description": "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'", @@ -1979,6 +2537,22 @@ "INSTANTIATE" ] }, + "MepInformation": { + "type": "object", + "required": [ + "mepId" + ], + "properties": { + "mepId": { + "type": "string", + "description": "Deployment-specific identifier of MEC platform." + }, + "mepName": { + "type": "string", + "description": "Human-readable name of MEC platform" + } + } + }, "CreateAppInstanceRequest": { "title": "CreateAppInstanceRequest", "required": [ @@ -1997,6 +2571,10 @@ "appInstanceName": { "type": "string", "description": "Human-readable name of the application instance to be created." + }, + "appPlacementInfo": { + "description": "Describes the information of selected MEC platform for the application instance to associate", + "$ref": "#/components/schemas/MepInformation" } } }, @@ -2011,7 +2589,7 @@ "subscriptionType": { "const": "AppInstanceStateChange", "type": "string", - "description": "Shall be set to AppInstanceStateChange.", + "description": "Shall be set to \"AppInstanceStateChangeSubscription\".", "examples": [ "AppInstanceStateChange" ] @@ -2172,7 +2750,8 @@ "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/AppInst.NotificationType" + "type": "string", + "description": "Discriminator for the different notification types. Shall be set to \"AppInstanceStateChangeSubscription\" for this notification type." }, "subscriptionId": { "type": "string", @@ -2180,6 +2759,48 @@ }, "timeStamp": { "$ref": "#/components/schemas/TimeStamp" + }, + "appInstLocation": { + "$ref": "#/components/schemas/LocationInformation" + }, + "appInstanceState": { + "type": "string", + "enum": [ + "NOT_INSTANTIATED", + "STARTED", + "STOPPED" + ] + } + } + }, + "LocationInformation": { + "type": "object", + "required": [ + "countryCode" + ], + "properties": { + "countryCode": { + "type": "string" + }, + "civicAddress": { + "$ref": "#/components/schemas/LocationInformation.civicAddress" + }, + "geographicalPosition": { + "type": "string" + } + } + }, + "LocationInformation.civicAddress": { + "type": "object", + "required": [ + "civicAddressElement" + ], + "properties": { + "civicAddressElement": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CivicAddressElement" + } } } }, @@ -2259,7 +2880,8 @@ "STARTING", "PROCESSING", "COMPLETED", - "FAILED" + "FAILED", + "FAILED_TEMP" ], "type": "string", "description": "Operation state", @@ -2344,6 +2966,8 @@ "required": [ "id", "notificationType", + "operationType", + "operationState", "subscriptionId", "timeStamp", "appLcmOpOccId", @@ -2357,7 +2981,27 @@ "description": "''" }, "notificationType": { - "$ref": "#/components/schemas/AppLcmOpOcc.NotificationType" + "type": "string", + "description": "Discriminator for the different notification types. Shall be set to \"AppLcmOpOccStateChangeSubscription\" for this notification type." + }, + "operationType": { + "type": "string", + "description": "Type of the LCM operation represented by this application instance LCM operation occurrence.", + "enum": [ + "INSTANTIATE", + "OPERATE", + "TERMINATE" + ] + }, + "operationState": { + "type": "string", + "enum": [ + "STARTING", + "PROCESSING", + "COMPLETED", + "FAILED", + "FAILED_TEMP" + ] }, "subscriptionId": { "type": "string", @@ -2380,19 +3024,86 @@ }, "description": "'This data type represents a notification related to state changes of an application LCM operation occurrence which informs the subscribers'" }, - "AppLcmOpOcc.NotificationType": { - "title": "AppLcmOpOcc.NotificationType", - "enum": [ - "STARTING", - "PROCESSING", - "COMPLETED", - "FAILED" + "AppInstanceIdentifierCreationNotification": { + "title": "AppInstanceIdentifierCreationNotification", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "appInstanceId", + "_links" ], - "type": "string", - "description": "Discriminator for the different notification types", - "examples": [ - "STARTING" - ] + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "notificationType": { + "type": "string", + "description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierCreationSubscription\" for this notification type." + }, + "subscriptionId": { + "type": "string" + }, + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" + }, + "appInstanceId": { + "type": "string" + }, + "_links": { + "$ref": "#/components/schemas/Notification._links" + } + } + }, + "Notification._links": { + "type": "object", + "required": [ + "subscription", + "appInstance" + ], + "properties": { + "subscription": { + "$ref": "#/components/schemas/LinkType" + }, + "appInstance": { + "$ref": "#/components/schemas/LinkType" + } + } + }, + "AppInstanceIdentifierDeletionNotification": { + "title": "AppInstanceIdentifierDeletionNotification", + "required": [ + "id", + "notificationType", + "subscriptionId", + "timeStamp", + "appInstanceId", + "_links" + ], + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "notificationType": { + "type": "string", + "description": "Discriminator for the different notification types. Shall be set to \"AppIdentifierDeletionSubscription\" for this notification type." + }, + "subscriptionId": { + "type": "string" + }, + "timeStamp": { + "$ref": "#/components/schemas/TimeStamp" + }, + "appInstanceId": { + "type": "string" + }, + "_links": { + "$ref": "#/components/schemas/Notification._links" + } + } }, "AppLcmOpOccNotification.links": { "title": "AppLcmOpOccNotification.links", @@ -2426,7 +3137,6 @@ "$ref": "#/components/schemas/LocationConstraints" }, "selectedMECHostInfo": { - "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/MECHostInformation" @@ -2434,7 +3144,6 @@ "description": "Describes the information of selected host for the application instance. See note 2." }, "vimConnectionInfo": { - "minItems": 0, "type": "array", "items": { "$ref": "#/components/schemas/VimConnectionInfo" @@ -2443,15 +3152,45 @@ }, "virtualComputeDescriptor": { "type": "string", - "description": "Ref NFV" + "description": "Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize the application instance to be created. This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD." }, "virtualStorageDescriptor": { - "minItems": 0, "type": "array", "items": { "type": "string" }, "description": "Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1." + }, + "appTermCandsForCoord": { + "$ref": "#/components/schemas/AppTermCandsForCoord" + } + } + }, + "AppTermCandsForCoord": { + "type": "object", + "required": [ + "terminationOptions" + ], + "properties": { + "terminationOptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppTermCandsForCoord.terminationOptions" + } + } + } + }, + "AppTermCandsForCoord.terminationOptions": { + "type": "object", + "required": [ + "appInstIdTerminationCands" + ], + "properties": { + "appInstIdTerminationCands": { + "type": "array", + "items": { + "type": "string" + } } } }, @@ -2470,9 +3209,6 @@ }, "LocationConstraints": { "title": "LocationConstraints", - "required": [ - "countryCode" - ], "type": "object", "properties": { "countryCode": { @@ -2483,8 +3219,11 @@ "type": "array", "items": { "$ref": "#/components/schemas/CivicAddressElement" - }, - "description": "" + } + }, + "area": { + "type": "object", + "description": "Geographic area. Shall be absent if the \"civicAddressElement\" attribute is present. The content of this attribute shall follow the provisions for the \"Polygon\" geometry object as defined in IETF RFC 7946 [8], for which" } }, "description": "'The LocationConstraints data type supports the specification of MEC application requirements related to MEC application deployment location constraints. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776'" @@ -2518,7 +3257,7 @@ "properties": { "hostId": { "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'" + "description": "Deployment-specific information to identify a MEC host. This information can be structured to cater for host identification schemes that are more complex than a simple identifier, e.g. when referring to the structure of an NFVI." }, "hostName": { "type": "string", @@ -2692,17 +3431,6 @@ } }, "description": "Links to resources related to this notification." - }, - "SubscriptionType": { - "title": "SubscriptionType", - "enum": [ - "AppInstanceStateChange", - "AppLcmOpOccStateChange" - ], - "type": "string", - "examples": [ - "AppInstanceStateChange" - ] } } }, diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 76a5176..3917a3a 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -9,11 +9,11 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '2.1.1' + version: '2.2.1' externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.1.1' - url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf + description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1' + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema tags: - name: app-lcm @@ -328,24 +328,9 @@ paths: post: tags: - 'app-lcm-notifications' - summary: 'subscribe to the notification of application instance operational state change' - description: subscribe to the notification of application instance operational state change + summary: 'subscribe to the notification of application instance related change' + description: subscribe to the notification of application instance related change operationId: appLcmSubscriptionsPOST - parameters: - - name: subscriptionType - in: query - description: >- - "Query parameter to filter on a specific subscription type. Permitted values: - • "AppInstanceStateChange" - • "AppLcmOpOccStateChange" - " - required: true - style: form - explode: true - schema: - oneOf: - - $ref: '#/components/schemas/AppInst.SubscriptionType' - - $ref: '#/components/schemas/AppLcmOpOcc.SubscriptionType' requestBody: description: '' content: @@ -354,6 +339,8 @@ paths: oneOf: - $ref: '#/components/schemas/AppInstSubscriptionRequest' - $ref: '#/components/schemas/AppLcmOpOccSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionRequest' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionRequest' contentMediaType: application/json required: true responses: @@ -366,6 +353,8 @@ paths: oneOf: - $ref: '#/components/schemas/AppInstSubscriptionInfo' - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' contentMediaType: application/json '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' @@ -438,11 +427,11 @@ paths: parameters: - name: subscriptionType in: query - description: 'Permitted values: AppInstanceStateChange or AppLcmOpOccStateChange' + description: Query parameter to filter on a specific subscription type. style: form explode: true schema: - type: string + $ref: '#/components/schemas/AppInstanceSubscriptionType' responses: '200': description: List of all subscriptions is returned. @@ -450,7 +439,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/SubscriptionLinkList' + $ref: '#/components/schemas/AppInstanceSubscriptionLinkList' '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} @@ -510,14 +499,6 @@ paths: style: simple schema: type: string - - name: subscriptionType - in: query - description: 'Permitted values: AppInstanceStateChange or AppLcmOpOccStateChange' - required: true - style: form - explode: true - schema: - type: string responses: '200': description: Representation of the resource. @@ -528,6 +509,8 @@ paths: oneOf: - $ref: '#/components/schemas/AppInstSubscriptionInfo' - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdCreationSubscriptionInfo' + - $ref: '#/components/schemas/AppInstIdDeletionSubscriptionInfo' contentMediaType: application/json '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' @@ -637,6 +620,8 @@ paths: oneOf: - $ref: '#/components/schemas/AppInstNotification' - $ref: '#/components/schemas/AppLcmOpOccNotification' + - $ref: '#/components/schemas/AppInstanceIdentifierCreationNotification' + - $ref: '#/components/schemas/AppInstanceIdentifierDeletionNotification' contentMediaType: application/json required: true responses: @@ -939,21 +924,21 @@ paths: type: string - name: fields in: query - description: Complex attributes of AppPkgInfo to be included into the response + description: Complex attributes of AppLcmOpOcc to be excluded from the response. style: form explode: true schema: type: string - name: exclude_fields in: query - description: Complex attributes of AppPkgInfo to be excluded from the response. + description: Complex attributes of AppLcmOpOcc to be excluded from the response. style: form explode: true schema: type: string - name: exclude_default in: query - description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. + description: Indicates to exclude the following complex attributes of AppLcmOpOcc from the response. style: form explode: true schema: @@ -967,7 +952,7 @@ paths: schema: type: array items: - $ref: '#/components/schemas/AppInstanceLcmOpOcc' + $ref: '#/components/schemas/AppLcmOpOcc' description: '' contentMediaType: application/json '400': @@ -1036,7 +1021,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/AppInstanceLcmOpOcc' + $ref: '#/components/schemas/AppLcmOpOcc' '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' headers: {} @@ -1081,123 +1066,524 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] -components: - schemas: - AppInstanceLcmOpOcc: - title: AppInstanceLcmOpOcc - required: - - id - - operationState - - stateEnteredTime - - startTime - - lcmOperation - - _links - type: object - properties: - id: - type: string - description: "'Identifier of the subscription to application LCM operation occurrence notification'" - operationState: - $ref: '#/components/schemas/OperationState' - stateEnteredTime: - $ref: '#/components/schemas/TimeStamp' - startTime: - $ref: '#/components/schemas/TimeStamp' - lcmOperation: - $ref: '#/components/schemas/LcmOperation' - operationParams: - $ref: '#/components/schemas/OperationParams' - _links: - $ref: '#/components/schemas/AppInstanceLcmOpOcc.links' - description: "'This data type represents an application lifecycle management operation occurrence'" - OperationParams: - title: OperationParams - enum: - - INSTANTIATE - - OPERATE - - TERMINATE - type: string - description: "'Input parameters of the LCM operation. This attribute shall be formatted according to the request data type of the related LCM operation.'" - examples: - - INSTANTIATE - AppInstanceLcmOpOcc.links: - title: AppInstanceLcmOpOcc.links - required: - - self - - appInstance - type: object - properties: - self: - $ref: '#/components/schemas/LinkType' - appInstance: - $ref: '#/components/schemas/LinkType' - description: Links to resources related to this resource. - SubscriptionLinkList: - title: SubscriptionLinkList - required: - - _links - type: object - properties: - _links: - $ref: '#/components/schemas/SubscriptionLinkList.links' - description: "'The data type represents a subscription link list of notification on application lifecycle management. '" - SubscriptionLinkList.links: - title: SubscriptionLinkList.links - required: - - self - type: object - properties: - self: - $ref: '#/components/schemas/LinkType' - subscriptions: - type: array - items: - $ref: '#/components/schemas/SubscriptionLinkList.links.subscriptions' - description: '' - description: Links to resources related to this resource. - SubscriptionLinkList.links.subscriptions: - title: SubscriptionLinkList.links.subscriptions - required: - - href - - subscriptionType - type: object - properties: - href: - type: string - subscriptionType: - $ref: '#/components/schemas/SubscriptionType' - description: A link list to the subscriptions - AppLcmOpOccSubscriptionInfo: - title: AppLcmOpOccSubscriptionInfo - required: - - id - - subscriptionType - - callbackUri - - _links - type: object - properties: - id: + /app_lcm_op_occs/{appLcmOpOccId}/cancel: + post: + tags: + - 'app-lcm' + summary: 'cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state.' + description: cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state. + operationId: appLcmCancelPOST + parameters: + - name: appLcmOpOccId + in: path + description: Identifies an individual application LCM operation occurrence + required: true + style: simple + schema: type: string - description: "''" - subscriptionType: - const: AppLcmOpOccStateChange + requestBody: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CancelMode' + required: true + responses: + '202': + description: The request was accepted for processing, but it is possible that the processing is not yet completed. + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_lcm_op_occs/{appLcmOpOccId}/fail: + post: + tags: + - 'app-lcm' + summary: marks an application lifecycle management operation occurrence as "finally failed" + description: marks an application lifecycle management operation occurrence as "finally failed" + operationId: appLcmFailPOST + parameters: + - name: appLcmOpOccId + in: path + description: Identifies an individual application LCM operation occurrence + required: true + style: simple + schema: type: string - description: Shall be set to AppLcmOpOccStateChange. - examples: - - AppLcmOpOccStateChange - callbackUri: + responses: + '202': + description: Shall be returned when the state of the application lifecycle management operation occurrence has been changed successfully + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppLcmOpOcc' + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_lcm_op_occs/{appLcmOpOccId}/retry: + post: + tags: + - 'app-lcm' + summary: initiate retrying an application lifecycle operation that has experience a temporary failure + description: initiate retrying an application lifecycle operation that has experience a temporary failure + operationId: appLcmRetryPOST + parameters: + - name: appLcmOpOccId + in: path + description: Identifies an individual application LCM operation occurrence + required: true + style: simple + schema: type: string - description: The URI of the endpoint for the notification to be sent to. - _links: - $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo.links' - description: "'This data type represents a subscription to notifications of application life cycle management operation occurrence'" - AppLcmOpOcc.SubscriptionType: - title: AppLcmOpOcc.SubscriptionType - const: AppLcmOpOccStateChange + responses: + '202': + description: The request was accepted for processing, but it is possible that the processing is not yet completed + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_instances/{appInstanceId}/configure_platform_for_app: + post: + tags: + - 'app-lcm' + summary: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. + description: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. + operationId: appInstancesConfigPlatformPOST + parameters: + - name: appInstanceId + in: path + description: The identifier of the application instance. + required: true + style: simple + schema: + type: string + requestBody: + description: The payload body in the request contains the information necessary to provide configuration information in AppD + content: + application/json: + schema: + $ref: './MEC010p2_v221_definitions.yaml#/definitions/ConfigPlatformForAppRequest' + responses: + '202': + description: The request was accepted for processing, but it is possible that the processing is not yet completed + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + + +components: + schemas: + AppLcmOpOcc: + title: AppLcmOpOcc + required: + - id + - operationState + - stateEnteredTime + - startTime + - lcmOperation + - _links + type: object + properties: + id: + type: string + description: "'Identifier of the subscription to application LCM operation occurrence notification'" + operationState: + $ref: '#/components/schemas/OperationState' + stateEnteredTime: + $ref: '#/components/schemas/TimeStamp' + startTime: + $ref: '#/components/schemas/TimeStamp' + lcmOperation: + $ref: '#/components/schemas/LcmOperation' + operationParams: + $ref: '#/components/schemas/OperationParams' + isCancelPending: + type: boolean + description: If the application LCM operation occurrence operationState is in "PROCESSING" state and the operation is being cancelled, this attribute shall be set to true. Otherwise, it shall be set to false. + cancelMode: + $ref: '#/components/schemas/CancelMode' + + _links: + $ref: '#/components/schemas/AppInstanceLcmOpOcc.links' + description: "'This data type represents an application lifecycle management operation occurrence'" + + AppInstanceSubscriptionLinkList: + required: + - _links + properties: + _links: + $ref: '#/components/schemas/AppInstanceSubscriptionLinkList._links' + + AppInstanceSubscriptionLinkList._links: + required: + - self + type: object + properties: + self: + type: string + description: URI referring to a resource + subscriptions: + type: array + items: + $ref: '#/components/schemas/AppInstanceSubscriptionLinkList._links.subscriptions' + + AppInstanceSubscriptionLinkList._links.subscriptions: + type: object + required: + - href + - subscriptionType + properties: + href: + type: uri + subscriptionType: + $ref: '#/components/schemas/AppInstanceSubscriptionType' + + + AppInstanceSubscriptionType: type: string - description: Shall be set to AppLcmOpOccStateChange. - examples: - - AppLcmOpOccStateChange + description: String representing the type of a subscription. + enum: + - AppInstanceStateChangeSubscription + - AppLcmOpOccStateChangeSubscription + - AppIdentifierCreationSubscription + - AppIdentifierDeletionSubscription + + OperationParams: + oneOf: + - $ref: '#/components/schemas/InstantiateAppRequest' + - $ref: '#/components/schemas/OperateAppRequest' + - $ref: '#/components/schemas/TerminateAppRequest' + + CancelMode: + description: Indicates the intervention action to be taken. GRACEFUL Indicates ongoing resource management operations in the underlying system are allowed to complete execution or time out. FORCED Indicates ongoing resource management operations in the underlying system are to be cancelled without allowing them to complete execution or time out. + type: string + enum: + - GRACEFUL + - FORCED + + + + + + AppInstIdCreationSubscriptionRequest: + type: object + required: + - subscriptionType + - callbackUri + properties: + subscriptionType: + type: string + callbackUri: + type: uri + appInstanceSubscriptionFilter: + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + + + + AppInstIdDeletionSubscriptionRequest: + type: object + required: + - subscriptionType + - callbackUri + properties: + subscriptionType: + type: string + description: Shall be set to "AppIdentifierDeletionSubscription". + callbackUri: + type: uri + appInstanceSubscriptionFilter: + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + + AppInstIdCreationSubscriptionInfo: + type: object + required: + - id + - subscriptionType + - callbackUri + - _links + properties: + id: + type: string + subscriptionType: + type: string + callbackUri: + type: uri + appInstanceSubscriptionFilter: + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + _links: + type: object + required: + - self + properties: + self: + $ref: '#/components/schemas/LinkType' + + + + AppInstIdDeletionSubscriptionInfo: + type: object + required: + - id + - subscriptionType + - callbackUri + - _links + properties: + id: + type: string + subscriptionType: + type: string + description: Shall be set to "AppIdentifierDeletionSubscription". + callbackUri: + type: uri + appInstanceSubscriptionFilter: + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' + _links: + type: object + required: + - self + properties: + self: + $ref: '#/components/schemas/LinkType' + + AppInstanceLcmOpOcc.links: + title: AppInstanceLcmOpOcc.links + required: + - self + - appInstance + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + appInstance: + $ref: '#/components/schemas/LinkType' + description: Links to resources related to this resource. + + + AppLcmOpOccSubscriptionInfo: + title: AppLcmOpOccSubscriptionInfo + required: + - id + - subscriptionType + - callbackUri + - _links + type: object + properties: + id: + type: string + description: Identifier of this subscription resource. + subscriptionType: + const: AppLcmOpOccStateChange + type: string + description: Shall be set to "AppLcmOpOccStateChangeSubscription". + examples: + - AppLcmOpOccStateChange + callbackUri: + type: string + description: The URI of the endpoint for the notification to be sent to. + appLcmOpOccSubscriptionFilter: + $ref: '#/components/schemas/AppLcmOpOccSubscriptionFilter' + description: Criteria used to select application LCM operation occurrences on which to send notifications related to this subscription. + _links: + $ref: '#/components/schemas/AppLcmOpOccSubscriptionInfo.links' + description: "'This data type represents a subscription to notifications of application life cycle management operation occurrence'" + AppLcmOpOccSubscriptionInfo.links: title: AppLcmOpOccSubscriptionInfo.links required: @@ -1212,7 +1598,6 @@ components: required: - id - subscriptionType - - notificationType - callbackUri - _links type: object @@ -1223,34 +1608,23 @@ components: subscriptionType: const: AppInstanceStateChange type: string - description: Shall be set to AppInstanceStateChange. + description: Shall be set to "AppInstanceStateChangeSubscription". examples: - - AppInstanceStateChange - notificationType: - $ref: '#/components/schemas/AppInst.NotificationType' + - AppInstanceStateChangeSubscription + appInstanceState: + type: string + enum: + - NOT_INSTANTIATED + - STARTED + - STOPPED + appInstanceSubscriptionFilter: + $ref: '#/components/schemas/AppInstanceSubscriptionFilter' callbackUri: type: string - description: The URI of the endpoint for the notification to be sent to. + description: The URI of the endpoint for the subscription related notification to be sent to. _links: $ref: '#/components/schemas/AppInstSubscriptionInfo.links' description: "'The data type represents a subscription to notification of application instance operational state change.'" - AppInst.SubscriptionType: - title: AppInst.SubscriptionType - const: AppInstanceStateChange - type: string - description: Shall be set to AppInstanceStateChange. - examples: - - AppInstanceStateChange - AppInst.NotificationType: - title: AppInst.NotificationType - enum: - - NOT_INSTANTIATED - - STARTED - - STOPPED - type: string - description: Subscribed notification - examples: - - NOT_INSTANTIATED AppInstSubscriptionInfo.links: title: AppInstSubscriptionInfo.links required: @@ -1273,7 +1647,8 @@ components: type: string subscriptionType: type: string - description: Shall be set to "AppLcmOpOccStateChange". + description: Shall be set to "AppLcmOpOccStateChangeSubscription". + AppLcmOpOccSubscriptionFilter: title: AppLcmOpOccSubscriptionFilter type: object @@ -1281,6 +1656,7 @@ components: appInstanceSubscriptionFilter: $ref: '#/components/schemas/AppInstanceSubscriptionFilter' notificationTypes: + description: Match particular notification types. Permitted values AppLcmOpOccNotification. $ref: '#/components/schemas/NotificationTypes' operationStates: $ref: '#/components/schemas/OperationStates' @@ -1300,6 +1676,7 @@ components: - PROCESSING - COMPLETED - FAILED + - FAILED_TEMP type: string description: "'Type of the LCM operation state represented by this application instance LCM operation occurrence.'" examples: @@ -1314,6 +1691,18 @@ components: description: "'Type of the LCM operation represented by this application instance LCM operation occurrence.'" examples: - INSTANTIATE + + MepInformation: + type: object + required: + - mepId + properties: + mepId: + type: string + description: Deployment-specific identifier of MEC platform. + mepName: + type: string + description: Human-readable name of MEC platform CreateAppInstanceRequest: title: CreateAppInstanceRequest required: @@ -1329,6 +1718,9 @@ components: appInstanceName: type: string description: Human-readable name of the application instance to be created. + appPlacementInfo: + description: Describes the information of selected MEC platform for the application instance to associate + $ref: '#/components/schemas/MepInformation' AppInstSubscriptionRequest: title: AppInstSubscriptionRequest required: @@ -1339,7 +1731,7 @@ components: subscriptionType: const: AppInstanceStateChange type: string - description: Shall be set to AppInstanceStateChange. + description: Shall be set to "AppInstanceStateChangeSubscription". examples: - AppInstanceStateChange callbackUri: @@ -1457,12 +1849,44 @@ components: 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/AppInst.NotificationType' + type: string + description: Discriminator for the different notification types. Shall be set to "AppInstanceStateChangeSubscription" for this notification type. subscriptionId: type: string description: Identifier of the subscription related to this notification. timeStamp: $ref: '#/components/schemas/TimeStamp' + appInstLocation: + $ref: '#/components/schemas/LocationInformation' + appInstanceState: + type: string + enum: + - NOT_INSTANTIATED + - STARTED + - STOPPED + + LocationInformation: + type: object + required: + - countryCode + properties: + countryCode: + type: string + civicAddress: + $ref: '#/components/schemas/LocationInformation.civicAddress' + geographicalPosition: + type: string + + LocationInformation.civicAddress: + type: object + required: + - civicAddressElement + properties: + civicAddressElement: + type: array + items: + $ref: '#/components/schemas/CivicAddressElement' + AppInstanceInfo: title: AppInstanceInfo required: @@ -1523,6 +1947,7 @@ components: - PROCESSING - COMPLETED - FAILED + - FAILED_TEMP type: string description: Operation state examples: @@ -1584,6 +2009,8 @@ components: required: - id - notificationType + - operationType + - operationState - subscriptionId - timeStamp - appLcmOpOccId @@ -1595,7 +2022,23 @@ components: type: string description: "''" notificationType: - $ref: '#/components/schemas/AppLcmOpOcc.NotificationType' + type: string + description: Discriminator for the different notification types. Shall be set to "AppLcmOpOccStateChangeSubscription" for this notification type. + operationType: + type: string + description: Type of the LCM operation represented by this application instance LCM operation occurrence. + enum: + - INSTANTIATE + - OPERATE + - TERMINATE + operationState: + type: string + enum: + - STARTING + - PROCESSING + - COMPLETED + - FAILED + - FAILED_TEMP subscriptionId: type: string description: Identifier of the subscription related to this notification. @@ -1610,17 +2053,72 @@ components: _links: $ref: '#/components/schemas/AppLcmOpOccNotification.links' description: "'This data type represents a notification related to state changes of an application LCM operation occurrence which informs the subscribers'" - AppLcmOpOcc.NotificationType: - title: AppLcmOpOcc.NotificationType - enum: - - STARTING - - PROCESSING - - COMPLETED - - FAILED - type: string - description: Discriminator for the different notification types - examples: - - STARTING + + + + + AppInstanceIdentifierCreationNotification: + title: AppInstanceIdentifierCreationNotification + required: + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links + type: object + properties: + id: + type: string + notificationType: + type: string + description: Discriminator for the different notification types. Shall be set to "AppIdentifierCreationSubscription" for this notification type. + subscriptionId: + type: string + timeStamp: + $ref: '#/components/schemas/TimeStamp' + appInstanceId: + type: string + _links: + $ref: '#/components/schemas/Notification._links' + + Notification._links: + type: object + required: + - subscription + - appInstance + properties: + subscription: + $ref: '#/components/schemas/LinkType' + appInstance: + $ref: '#/components/schemas/LinkType' + + AppInstanceIdentifierDeletionNotification: + title: AppInstanceIdentifierDeletionNotification + required: + - id + - notificationType + - subscriptionId + - timeStamp + - appInstanceId + - _links + type: object + properties: + id: + type: string + notificationType: + type: string + description: Discriminator for the different notification types. Shall be set to "AppIdentifierDeletionSubscription" for this notification type. + subscriptionId: + type: string + timeStamp: + $ref: '#/components/schemas/TimeStamp' + appInstanceId: + type: string + _links: + $ref: '#/components/schemas/Notification._links' + + AppLcmOpOccNotification.links: title: AppLcmOpOccNotification.links required: @@ -1645,13 +2143,11 @@ components: locationConstraints: $ref: '#/components/schemas/LocationConstraints' selectedMECHostInfo: - minItems: 1 type: array items: $ref: '#/components/schemas/MECHostInformation' description: Describes the information of selected host for the application instance. See note 2. vimConnectionInfo: - minItems: 0 type: array items: $ref: '#/components/schemas/VimConnectionInfo' @@ -1661,13 +2157,35 @@ components: This attribute shall only be supported and may be present if application-related resource management in direct mode is applicable. See note 2. virtualComputeDescriptor: type: string - description: Ref NFV + description: Describes CPU and memory requirements, as well as optional additional requirements, such as disk and acceleration related capabilities, of the virtualisation container used to realize the application instance to be created. This attribute may be provided in the InstantiateAppRequest structure to override the same attribute in the AppD. virtualStorageDescriptor: - minItems: 0 type: array items: type: string description: Defines descriptors of virtual storage resources to be used by the application instance to be created. See note 1. + appTermCandsForCoord: + $ref: '#/components/schemas/AppTermCandsForCoord' + + AppTermCandsForCoord: + type: object + required: + - terminationOptions + properties: + terminationOptions: + type: array + items: + $ref: '#/components/schemas/AppTermCandsForCoord.terminationOptions' + + + AppTermCandsForCoord.terminationOptions: + type: object + required: + - appInstIdTerminationCands + properties: + appInstIdTerminationCands: + type: array + items: + type: string LinkType: title: LinkType required: @@ -1679,8 +2197,6 @@ components: description: URI referring to a resource LocationConstraints: title: LocationConstraints - required: - - countryCode type: object properties: countryCode: @@ -1690,7 +2206,9 @@ components: type: array items: $ref: '#/components/schemas/CivicAddressElement' - description: '' + area: + type: object + description: Geographic area. Shall be absent if the "civicAddressElement" attribute is present. The content of this attribute shall follow the provisions for the "Polygon" geometry object as defined in IETF RFC 7946 [8], for which description: "'The LocationConstraints data type supports the specification of MEC application requirements related to MEC application deployment location constraints. The location constraints shall be presented as a country code, optionally followed by a civic address based on the format defined by IETF RFC 4776'" CivicAddressElement: title: CivicAddressElement @@ -1715,7 +2233,7 @@ components: properties: hostId: 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'" + description: Deployment-specific information to identify a MEC host. This information can be structured to cater for host identification schemes that are more complex than a simple identifier, e.g. when referring to the structure of an NFVI. hostName: type: string description: Human-readable name of MEC host. @@ -1841,13 +2359,5 @@ components: subscription: $ref: '#/components/schemas/LinkType' description: Links to resources related to this notification. - SubscriptionType: - title: SubscriptionType - enum: - - AppInstanceStateChange - - AppLcmOpOccStateChange - type: string - examples: - - AppInstanceStateChange security: - {} diff --git a/MEC010-2_AppPkgMgmt.json b/MEC010-2_AppPkgMgmt.json index ac04e79..c561314 100644 --- a/MEC010-2_AppPkgMgmt.json +++ b/MEC010-2_AppPkgMgmt.json @@ -12,12 +12,12 @@ "url": "https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api", "email": "cti_support@etsi.org" }, - "version": "2.1.1" + "version": "2.2.1" }, "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "externalDocs": { - "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.1.1", - "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf" + "description": "ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf" }, "tags": [ { @@ -41,8 +41,8 @@ "tags": [ "app-pkgm" ], - "summary": "Create a resource for on-boarding an application package to a MEO", - "description": "Create a resource for on-boarding an application package to a MEO", + "summary": "Create a resource for on-boarding an application package to a MEO/MEAO", + "description": "Create a resource for on-boarding an application package to a MEO/MEAO", "operationId": "app_packagesPOST", "parameters": [], "requestBody": { @@ -63,11 +63,8 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AppPkgInfo" - }, - "description": "", + "$ref": "#/components/schemas/AppPkgInfo", + "description": "The response body shall contain a representation of the application package resource", "contentMediaType": "application/json" } } @@ -146,8 +143,8 @@ "tags": [ "app-pkgm" ], - "summary": "Queries information relating to on-boarded application packages in the MEO'", - "description": "queries information relating to on-boarded application packages in the MEO", + "summary": "Queries information relating to on-boarded application packages in the MEO/MEAO'", + "description": "queries information relating to on-boarded application packages in the MEO/MEAO", "operationId": "app_packagesGET", "parameters": [ { @@ -289,34 +286,36 @@ }, "parameters": [] }, - "/app_packages/{appPkgId}": { - "get": { + "/onboarded_app_packages": { + "post": { "tags": [ "app-pkgm" ], - "summary": "Queries the information related to individual application package resources", - "description": "Queries the information related to individual application package resources", - "operationId": "app_packageGET", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", - "schema": { - "type": "string" + "summary": "Create a resource for on-boarding an application package to a MEO/MEAO", + "description": "Create a resource for on-boarding an application package to a MEO/MEAO", + "operationId": "onboarded_app_packagesPOST", + "parameters": [], + "requestBody": { + "description": "Resource to be created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAppPkg" + } } - } - ], + }, + "required": true + }, "responses": { - "200": { - "description": "Contains a representation of the application package resource", + "201": { + "description": "Successful response for resource creation", "headers": {}, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgInfo" + "$ref": "#/components/schemas/AppPkgInfo", + "description": "The response body shall contain a representation of the application package resource", + "contentMediaType": "application/json" } } } @@ -390,30 +389,81 @@ }, "deprecated": false }, - "delete": { + "get": { "tags": [ "app-pkgm" ], - "summary": "Deletes an individual application package resources", - "description": "Deletes an individual application package resources", - "operationId": "app_packageDELETE", + "summary": "Queries information relating to on-boarded application packages in the MEO/MEAO'", + "description": "queries information relating to on-boarded application packages in the MEO/MEAO", + "operationId": "onboarded_app_packagesGET", "parameters": [ { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an individual application package resource", - "required": true, - "style": "simple", + "name": "filter", + "in": "query", + "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "all_fields", + "in": "query", + "description": "Include all complex attributes in the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be included into the response", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_default", + "in": "query", + "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "style": "form", + "explode": true, "schema": { "type": "string" } } ], "responses": { - "204": { - "description": "No Content", + "200": { + "description": "Contains a representation of the application package resource", "headers": {}, - "content": {} + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AppPkgInfo" + }, + "description": "", + "contentMediaType": "application/json" + } + } + } }, "400": { "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", @@ -484,13 +534,16 @@ }, "deprecated": false }, - "patch": { + "parameters": [] + }, + "/app_packages/{appPkgId}": { + "get": { "tags": [ "app-pkgm" ], - "summary": "Updates the operational state of an individual application package resource", - "description": "Updates the operational state of an individual application package resources", - "operationId": "app_packagePATCH", + "summary": "Queries the information related to individual application package resources", + "description": "Queries the information related to individual application package resources", + "operationId": "app_packageGET", "parameters": [ { "name": "appPkgId", @@ -503,25 +556,14 @@ } } ], - "requestBody": { - "description": "Operational state to be set", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" - } - } - }, - "required": true - }, "responses": { "200": { - "description": "Shows that the operation has been completed successfully", + "description": "Contains a representation of the application package resource", "headers": {}, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgInfoModifications" + "$ref": "#/components/schemas/AppPkgInfo" } } } @@ -581,17 +623,6 @@ } } }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "429": { "description": "Too Many Requests : used when a rate limiter has triggered.", "headers": {}, @@ -606,39 +637,30 @@ }, "deprecated": false }, - "parameters": [] - }, - "/subscriptions": { - "post": { + "delete": { "tags": [ "app-pkgm" ], - "summary": "Subscribe to notifications about on-boarding an application package", - "description": "Subscribe to notifications about on-boarding an application package", - "operationId": "subscriptionsPOST", - "parameters": [], - "requestBody": { - "description": "The input parameters of subscribe operation to notifications", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscription" - } + "summary": "Deletes an individual application package resources in MEO/MEAO", + "description": "Deletes an individual application package resources in MEO/MEAO", + "operationId": "app_packageDELETE", + "parameters": [ + { + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" } - }, - "required": true - }, + } + ], "responses": { - "201": { - "description": "Successful response for created subscription", + "204": { + "description": "No Content", "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo" - } - } - } + "content": {} }, "400": { "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", @@ -707,50 +729,46 @@ } } }, - "callbacks": { - "notification": { - "{$request.body#/subscription.href}": { - "post": { - "summary": "Callback POST used to send a notification", - "description": " The notification is triggered when a new application package is onboarded", - "operationId": "notificationPOST", - "requestBody": { - "description": "Subscription notification", - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgNotification" - } - } - } - }, - "responses": { - "204": { - "description": "No content" - } - } - } - } - } - } + "deprecated": false }, - "get": { + "patch": { "tags": [ "app-pkgm" ], - "summary": "used to retrieve the information of subscriptions to individual application package resource in MEO", - "description": "used to retrieve the information of subscriptions to individual application package resource in MEO package", - "operationId": "subscriptionsGET", - "parameters": [], + "summary": "Updates the operational state of an individual application package resource", + "description": "Updates the operational state of an individual application package resources", + "operationId": "app_packagePATCH", + "parameters": [ + { + "name": "appPkgId", + "in": "path", + "description": "Identifier of an individual application package resource", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Parameters for application package information modification.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "List of zero or more subscriptions", + "description": "Shows that the operation has been completed successfully", "headers": {}, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionLinkList" + "$ref": "#/components/schemas/AppPkgInfoModifications" } } } @@ -810,8 +828,8 @@ } } }, - "429": { - "description": "Too Many Requests : used when a rate limiter has triggered.", + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", "headers": {}, "content": { "application/json": { @@ -820,25 +838,36 @@ } } } - } - }, - "deprecated": false + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false }, "parameters": [] }, - "/subscriptions/{subscriptionId}": { + "/onboarded_app_packages/{appPkgId}": { "get": { "tags": [ "app-pkgm" ], - "summary": "Used to represent an individual subscription to notifications about application package changes.", - "description": "Used to represent an individual subscription to notifications about application package changes.", - "operationId": "individualSubscriptionGET", + "summary": "Queries the information related to individual application package resources", + "description": "Queries the information related to individual application package resources", + "operationId": "onboarded_app_packageGET", "parameters": [ { - "name": "subscriptionId", + "name": "appPkgId", "in": "path", - "description": "Identifier of an individual subscription to notifications about application package changes", + "description": "Identifier of an individual application package resource", "required": true, "style": "simple", "schema": { @@ -848,12 +877,12 @@ ], "responses": { "200": { - "description": "Representation of the resource.", + "description": "Contains a representation of the application package resource", "headers": {}, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppPkgSubscriptionInfo" + "$ref": "#/components/schemas/AppPkgInfo" } } } @@ -931,14 +960,14 @@ "tags": [ "app-pkgm" ], - "summary": "Deletes the individual subscription to notifications about application package changes in MEO.", - "description": "Deletes the individual subscription to notifications about application package changes in MEO.", - "operationId": "individualSubscriptionDELETE", + "summary": "Deletes an individual application package resources in MEO/MEAO", + "description": "Deletes an individual application package resources in MEO/MEAO", + "operationId": "onboarded_app_packageDELETE", "parameters": [ { - "name": "subscriptionId", + "name": "appPkgId", "in": "path", - "description": "Identifier of an individual subscription to notifications about application package changes", + "description": "Identifier of an individual application package resource", "required": true, "style": "simple", "schema": { @@ -952,6 +981,17 @@ "headers": {}, "content": {} }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, "401": { "description": "Unauthorized : used when the client did not submit credentials.", "headers": {}, @@ -985,6 +1025,17 @@ } } }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, "429": { "description": "Too Many Requests : used when a rate limiter has triggered.", "headers": {}, @@ -999,89 +1050,46 @@ }, "deprecated": false }, - "parameters": [] - }, - "/app_packages/{appPkgId}/appd": { - "get": { + "patch": { "tags": [ "app-pkgm" ], - "summary": "Reads the content of the AppD of on-boarded individual application package resources.", - "description": "Reads the content of the AppD of on-boarded individual application package resources.", - "operationId": "appPkgIdGET", + "summary": "Updates the operational state of an individual application package resource", + "description": "Updates the operational state of an individual application package resources", + "operationId": "onboarded_app_packagePATCH", "parameters": [ { "name": "appPkgId", "in": "path", - "description": "Identifier of an on-boarded individual application package", + "description": "Identifier of an individual application package resource", "required": true, "style": "simple", "schema": { "type": "string" } - }, - { - "name": "filter", - "in": "query", - "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "all_fields", - "in": "query", - "description": "Include all complex attributes in the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be included into the response", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be excluded from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_default", - "in": "query", - "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } } ], + "requestBody": { + "description": "Parameters for application package information modification.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgInfoModifications" + } + } + }, + "required": true + }, "responses": { "200": { - "description": "Content of the AppD is returned.", + "description": "Shows that the operation has been completed successfully", "headers": {}, "content": { - "text/plain": { + "application/json": { "schema": { - "$ref": "#/components/schemas/AppD" + "$ref": "#/components/schemas/AppPkgInfoModifications" } - }, - "application/zip": {} + } } }, "400": { @@ -1139,6 +1147,17 @@ } } }, + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, "429": { "description": "Too Many Requests : used when a rate limiter has triggered.", "headers": {}, @@ -1155,87 +1174,36 @@ }, "parameters": [] }, - "/onboarded_app_packages/{appDId}/appd": { - "get": { + "/subscriptions": { + "post": { "tags": [ "app-pkgm" ], - "summary": "Reads the content of the AppD of on-boarded individual application package resources.", - "description": "Reads the content of the AppD of on-boarded individual application package resources.", - "operationId": "appDGET", - "parameters": [ - { - "name": "appDId", - "in": "path", - "description": "Identifier of an application descriptor", - "required": true, - "style": "simple", - "schema": { - "type": "string" - } - }, - { - "name": "filter", - "in": "query", - "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "all_fields", - "in": "query", - "description": "Include all complex attributes in the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be included into the response", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - }, - { - "name": "exclude_fields", - "in": "query", - "description": "Complex attributes of AppPkgInfo to be excluded from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" + "summary": "Subscribe to notifications about on-boarding an application package", + "description": "Subscribe to notifications about on-boarding an application package", + "operationId": "subscriptionsPOST", + "parameters": [], + "requestBody": { + "description": "The input parameters of subscribe operation to notifications", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscription" + } } }, - { - "name": "exclude_default", - "in": "query", - "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", - "style": "form", - "explode": true, - "schema": { - "type": "string" - } - } - ], + "required": true + }, "responses": { - "200": { - "description": "Content of the AppD is returned.", + "201": { + "description": "Successful response for created subscription", "headers": {}, "content": { - "text/plain": { + "application/json": { "schema": { - "$ref": "#/components/schemas/AppD" + "$ref": "#/components/schemas/AppPkgSubscriptionInfo" } - }, - "application/zip": {} + } } }, "400": { @@ -1305,43 +1273,52 @@ } } }, - "deprecated": false - }, - "parameters": [] - }, - "/app_packages/{appPkgId}/package_content": { - "get": { - "tags": [ - "app-pkgm" - ], - "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "description": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "operationId": "appPkgGET", - "parameters": [ - { - "name": "appPkgId", - "in": "path", - "description": "Identifier of an on-boarded individual application package", - "required": true, - "style": "simple", - "schema": { - "type": "string" + "callbacks": { + "notification": { + "{$request.body#/subscription.href}": { + "post": { + "summary": "Callback POST used to send a notification", + "description": " The notification is triggered when a new application package is onboarded", + "operationId": "notificationPOST", + "requestBody": { + "description": "Subscription notification", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgNotification" + } + } + } + }, + "responses": { + "204": { + "description": "No content" + } + } + } } } + } + }, + "get": { + "tags": [ + "app-pkgm" ], + "summary": "used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO", + "description": "used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO package", + "operationId": "subscriptionsGET", + "parameters": [], "responses": { "200": { - "description": "The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.", - "headers": {}, - "content": { - "application/zip": {} - } - }, - "206": { - "description": "Partial content", + "description": "List of zero or more subscriptions", "headers": {}, "content": { - "application/zip": {} + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscriptionLinkList" + } + } } }, "400": { @@ -1399,11 +1376,6 @@ } } }, - "416": { - "description": "Range Not Satisfiable .", - "headers": {}, - "content": {} - }, "429": { "description": "Too Many Requests : used when a rate limiter has triggered.", "headers": {}, @@ -1418,18 +1390,21 @@ }, "deprecated": false }, - "put": { + "parameters": [] + }, + "/subscriptions/{subscriptionId}": { + "get": { "tags": [ "app-pkgm" ], - "summary": "Uploads the content of application package.", - "description": "Uploads the content of application package.", - "operationId": "appPkgPUT", + "summary": "Used to represent an individual subscription to notifications about application package changes.", + "description": "Used to represent an individual subscription to notifications about application package changes.", + "operationId": "individualSubscriptionGET", "parameters": [ { - "name": "appPkgId", + "name": "subscriptionId", "in": "path", - "description": "Identifier of an on-boarded individual application package", + "description": "Identifier of an individual subscription to notifications about application package changes", "required": true, "style": "simple", "schema": { @@ -1437,18 +1412,17 @@ } } ], - "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.", + "200": { + "description": "a response body containing a representation of the resource shall be returned.", "headers": {}, - "content": {} + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgSubscriptionInfo" + } + } + } }, "400": { "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", @@ -1505,17 +1479,6 @@ } } }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "429": { "description": "Too Many Requests : used when a rate limiter has triggered.", "headers": {}, @@ -1530,21 +1493,18 @@ }, "deprecated": false }, - "parameters": [] - }, - "/onboarded_app_packages/{appDId}/package_content": { - "get": { + "delete": { "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", + "summary": "Deletes the individual subscription to notifications about application package changes in MEO or MEAO.", + "description": "Deletes the individual subscription to notifications about application package changes in MEO or MEAO.", + "operationId": "individualSubscriptionDELETE", "parameters": [ { - "name": "appDId", + "name": "subscriptionId", "in": "path", - "description": "Identifier of an application descriptor", + "description": "Identifier of an individual subscription to notifications about application package changes", "required": true, "style": "simple", "schema": { @@ -1553,27 +1513,11 @@ } ], "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": "Partial content", + "204": { + "description": "No Content", "headers": {}, "content": {} }, - "400": { - "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "401": { "description": "Unauthorized : used when the client did not submit credentials.", "headers": {}, @@ -1607,22 +1551,6 @@ } } }, - "406": { - "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "416": { - "description": "Range Not Satisfiable .", - "headers": {}, - "content": {} - }, "429": { "description": "Too Many Requests : used when a rate limiter has triggered.", "headers": {}, @@ -1637,37 +1565,90 @@ }, "deprecated": false }, - "put": { + "parameters": [] + }, + "/app_packages/{appPkgId}/appd": { + "get": { "tags": [ "app-pkgm" ], - "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", - "description": "Uploads the content of application package.", - "operationId": "appDIdPUT", + "summary": "Reads the content of the AppD of on-boarded individual application package resources.", + "description": "Reads the content of the AppD of on-boarded individual application package resources.", + "operationId": "appPkgIdGET", "parameters": [ { - "name": "appDId", + "name": "appPkgId", "in": "path", - "description": "Identifier of an application descriptor", + "description": "Identifier of an on-boarded individual application package", "required": true, "style": "simple", "schema": { "type": "string" } + }, + { + "name": "filter", + "in": "query", + "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "all_fields", + "in": "query", + "description": "Include all complex attributes in the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be included into the response", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_default", + "in": "query", + "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } } ], - "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.", + "200": { + "description": "Content of the AppD is returned.", "headers": {}, - "content": {} + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AppD" + } + }, + "application/zip": {} + } }, "400": { "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", @@ -1724,17 +1705,6 @@ } } }, - "409": { - "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", - "headers": {}, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "429": { "description": "Too Many Requests : used when a rate limiter has triggered.", "headers": {}, @@ -1751,21 +1721,617 @@ }, "parameters": [] }, - "/user_defined_notification": { - "post": { + "/onboarded_app_packages/{appDId}/appd": { + "get": { "tags": [ - "app-pkgm-notifications" + "app-pkgm" ], - "summary": "Registers a notification endpoint to notify application package operations", - "description": "Registers a notification endpoint to notify application package operations", - "operationId": "app_pkg_notificationPOST", - "parameters": [], - "requestBody": { - "description": "Notification endpoint to be created", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AppPkgNotification" + "summary": "Reads the content of the AppD of on-boarded individual application package resources.", + "description": "Reads the content of the AppD of on-boarded individual application package resources.", + "operationId": "appDGET", + "parameters": [ + { + "name": "appDId", + "in": "path", + "description": "Identifier of an application descriptor", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + }, + { + "name": "filter", + "in": "query", + "description": "Attribute-based filtering parameters according to ETSI GS MEC 009", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "all_fields", + "in": "query", + "description": "Include all complex attributes in the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be included into the response", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_fields", + "in": "query", + "description": "Complex attributes of AppPkgInfo to be excluded from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + }, + { + "name": "exclude_default", + "in": "query", + "description": "Indicates to exclude the following complex attributes of AppPkgInfo from the response.", + "style": "form", + "explode": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Content of the AppD is returned.", + "headers": {}, + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/AppD" + } + }, + "application/zip": {} + } + }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/app_packages/{appPkgId}/package_content": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "description": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "operationId": "appPkgGET", + "parameters": [ + { + "name": "appPkgId", + "in": "path", + "description": "Identifier of an on-boarded individual application package", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.", + "headers": {}, + "content": { + "application/zip": {} + } + }, + "206": { + "description": "On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned.", + "headers": {}, + "content": { + "application/zip": {} + } + }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "416": { + "description": "Range Not Satisfiable .", + "headers": {}, + "content": {} + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "app-pkgm" + ], + "summary": "Uploads the content of application package.", + "description": "Uploads the content of application package.", + "operationId": "appPkgPUT", + "parameters": [ + { + "name": "appPkgId", + "in": "path", + "description": "Identifier of an on-boarded individual application package", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/zip": {} + }, + "required": false + }, + "responses": { + "202": { + "description": "The application package has been accepted for uploading, but the processing has not been completed.", + "headers": {}, + "content": {} + }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/onboarded_app_packages/{appDId}/package_content": { + "get": { + "tags": [ + "app-pkgm" + ], + "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "description": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "operationId": "appDIdGET", + "parameters": [ + { + "name": "appDId", + "in": "path", + "description": "Identifier of an application descriptor", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "The payload body shall contain a copy of the file representing the AppD or a ZIP file that contains the file or multiple files representing the AppD.", + "headers": {}, + "content": {} + }, + "206": { + "description": "On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned.", + "headers": {}, + "content": {} + }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "416": { + "description": "Range Not Satisfiable .", + "headers": {}, + "content": {} + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "put": { + "tags": [ + "app-pkgm" + ], + "summary": "Fetch the onboarded application package content identified by appPkgId or appDId.", + "description": "Uploads the content of application package.", + "operationId": "appDIdPUT", + "parameters": [ + { + "name": "appDId", + "in": "path", + "description": "Identifier of an application descriptor", + "required": true, + "style": "simple", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "", + "content": { + "application/zip": {} + }, + "required": false + }, + "responses": { + "202": { + "description": "The application package has been accepted for uploading, but the processing has not been completed.", + "headers": {}, + "content": {} + }, + "400": { + "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized : used when the client did not submit credentials.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Forbidden : operation is not allowed given the current status of the resource.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "406": { + "description": "Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "429": { + "description": "Too Many Requests : used when a rate limiter has triggered.", + "headers": {}, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "deprecated": false + }, + "parameters": [] + }, + "/user_defined_notification": { + "post": { + "tags": [ + "app-pkgm-notifications" + ], + "summary": "Registers a notification endpoint to notify application package operations", + "description": "Registers a notification endpoint to notify application package operations", + "operationId": "app_pkg_notificationPOST", + "parameters": [], + "requestBody": { + "description": "Notification endpoint to be created", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AppPkgNotification" } } }, @@ -1849,10 +2415,9 @@ "description": "Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1." }, "appDNSRule": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/DNSRuleDescriptor" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/DNSRuleDescriptor" }, "description": "Describes DNS rules the MEC application requires." }, @@ -1865,7 +2430,6 @@ "description": "Human readable description of the MEC application." }, "appExtCpd": { - "minItems": 0, "type": "array", "items": { "$ref": "#/components/schemas/AppExternalCpd" @@ -1873,18 +2437,16 @@ "description": "Describes external interface(s) exposed by this MEC application." }, "appFeatureOptional": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/FeatureDependency" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/FeatureDependency" }, "description": "Describes features a MEC application may use if available." }, "appFeatureRequired": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/FeatureDependency" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/FeatureDependency" }, "description": "Describes features a MEC application requires to run." }, @@ -1893,7 +2455,7 @@ "description": "Human readable name for the MEC application." }, "appLatency": { - "$ref": "#/components/schemas/LatencyDescriptor" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/LatencyDescriptor" }, "appName": { "type": "string", @@ -1904,26 +2466,23 @@ "description": "Provider of the application and of the AppD." }, "appServiceOptional": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/ServiceDependency" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/ServiceDependency" }, "description": "Describes services a MEC application may use if available." }, "appServiceProduced": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/ServiceDescriptor" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/ServiceDescriptor" }, "description": "Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps." }, "appServiceRequired": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/ServiceDependency" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/ServiceDependency" }, "description": "Describes services a MEC application requires to run." }, @@ -1932,10 +2491,9 @@ "description": "Identifies the version of software of the MEC application." }, "appTrafficRule": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/TrafficRuleDescriptor" + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/TrafficRuleDescriptor" }, "description": "Describes traffic rules the MEC application requires." }, @@ -1944,40 +2502,43 @@ "description": "NFV" }, "mecVersion": { - "minItems": 1, "type": "array", "items": { "type": "string" }, - "description": "Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD." + "description": "Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation." }, "swImageDescriptor": { "type": "string", - "description": "Ref NFV" + "description": "Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application." }, "terminateAppInstanceOpConfig": { "type": "string", "description": "NFV" }, "transportDependencies": { - "minItems": 0, "type": "array", "items": { - "$ref": "#/components/schemas/TransportDependency" + "$ref": "./MEC010p2_v221_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": { - "type": "string", - "description": "Ref NFV" + "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": { - "minItems": 0, "type": "array", "items": { "type": "string" }, "description": "Defines descriptors of virtual storage resources to be used by the MEC application." + }, + "userContextTransferCapability": { + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/UserContextTransferCapability" + }, + "appNetworkPolicy": { + "$ref": "./MEC010p2_v221_definitions.yaml#/definitions/AppNetworkPolicy" } } }, @@ -1993,7 +2554,6 @@ "description": "All attributes inherited from Cpd." }, "virtualNetworkInterfaceRequirements": { - "minItems": 0, "type": "array", "items": { "type": "string" @@ -2015,6 +2575,7 @@ "onboardingState", "operationalState", "usageState", + "mecInfo", "_links" ], "type": "object", @@ -2046,6 +2607,10 @@ "checksum": { "$ref": "#/components/schemas/Checksum" }, + "signingCertificate": { + "type": "string", + "description": "The singleton signing certificate if it is included as a file in the AppD archive." + }, "softwareImages": { "type": "object", "description": "Information of application software image in application package. Type is TBD" @@ -2063,8 +2628,19 @@ "usageState": { "$ref": "#/components/schemas/UsageState" }, + "mecInfo": { + "type": "array", + "description": "The MEC version that compatible with this application. This information is copied from the AppD.", + "items": { + "type": "string" + } + }, + "onBoardingFailureDetails": { + "description": "Failure details of current onboarding procedure", + "$ref": "#/components/schemas/ProblemDetails" + }, "userDefinedData": { - "type": "object", + "$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": { @@ -2141,6 +2717,9 @@ }, "appPkgContent": { "$ref": "#/components/schemas/LinkType" + }, + "vnfPkgInfo": { + "$ref": "#/components/schemas/LinkType" } }, "description": "Links to resources related to this resource." @@ -2229,10 +2808,11 @@ "properties": { "id": { "type": "string", - "description": "''" + "description": "Identifier of the subscription to application package notification." }, "subscriptionType": { - "$ref": "#/components/schemas/AppPkg.SubscriptionType" + "description": "Type of subscription.", + "$ref": "#/components/schemas/AppPkgSubscriptionType" }, "callbackUri": { "type": "string", @@ -2244,17 +2824,17 @@ }, "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", + "AppPkgSubscriptionType": { + "title": "AppPkgSubscriptionType", "enum": [ - "AppPackageOnBoarding", - "AppPacakgeOperationChange", - "AppPackageDeletion" + "AppPackageOnBoardingSubscription", + "AppPackageChangeSubscription", + "AppPackageDeletionSubscription" ], "type": "string", - "description": "Subscribed notification type.", + "description": "type of a subscription.", "examples": [ - "AppPackageOnBoarding" + "AppPackageOnBoardingSubscription" ] }, "AppPkgSubscriptionInfo.links": { @@ -2307,7 +2887,7 @@ "title": "Subscriptions.AppPkgSubscription", "required": [ "href", - "subsctiptionType" + "subscriptionType" ], "type": "object", "properties": { @@ -2315,8 +2895,8 @@ "type": "string", "description": "The URI referring to the subscription." }, - "subsctiptionType": { - "$ref": "#/components/schemas/SubsctiptionType.AppPkg" + "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.'" @@ -2325,7 +2905,7 @@ "title": "AppPkgSubscription", "required": [ "callbackUri", - "subsctiptionType" + "subscriptionType" ], "type": "object", "properties": { @@ -2333,31 +2913,64 @@ "type": "string", "description": "The URI of the endpoint for the notification to be sent to." }, - "subsctiptionType": { - "$ref": "#/components/schemas/SubsctiptionType.AppPkg" + "subscriptionType": { + "$ref": "#/components/schemas/AppPkgSubscriptionType" }, "appPkgFilter": { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/AppPkgFilter" }, - "description": "" + "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.'" }, - "SubsctiptionType.AppPkg": { - "title": "SubsctiptionType.AppPkg", - "enum": [ - "AppPackageOnBoarding", - "AppPacakgeOperationChange", - "AppPackageDeletion" - ], - "type": "string", - "description": "'Subscribed notification type'", - "examples": [ - "AppPackageOnBoarding" - ] + "AppPkgFilter": { + "title": "AppPkgFilter", + "type": "object", + "properties": { + "appPkgInfoId": { + "type": "string", + "description": "Match the application package identifier which is allocated by the MEO. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter." + }, + "appDId": { + "type": "string", + "description": "Match the application descriptor identifier which is allocated by the application provider. The attributes \"appPkgInfoId \", and \"appDId\" are alternatives to reference particular application package in a filter." + }, + "appProvider": { + "type": "string", + "description": "Match the provider's name of the onboarded application." + }, + "appName": { + "type": "string", + "description": "Match the name of the onboarded application." + }, + "appSoftwareVersion": { + "type": "string", + "description": "Match the software version of the application package." + }, + "appDVersion": { + "type": "string", + "description": "Match the version of the application descriptor." + }, + "operationalState": { + "type": "string", + "description": "Match particular operational state of the application package. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise.", + "enum": [ + "ENABLED", + "DISABLED" + ] + }, + "usageState": { + "type": "string", + "description": "Match particular usage state of the application package. May be present if the \"subscriptionType\" attribute contains the value \"AppPackageChangeSubscription\", and shall be absent otherwise.", + "enum": [ + "N_USE", + "NOT_IN_USE" + ] + } + } }, "Checksum": { "title": "Checksum", @@ -2392,11 +3005,11 @@ "description": "Name of the application package to be onboarded." }, "appPkgPath": { - "type": "string" + "type": "uri" }, "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." + "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", @@ -2406,125 +3019,15 @@ "$ref": "#/components/schemas/Checksum" }, "userDefinedData": { - "type": "object", + "$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'" } } }, - "DNSRuleDescriptor": { - "title": "DNSRuleDescriptor", - "required": [ - "dnsRuleId", - "domainName", - "ipAddress", - "ipAddressType" - ], - "type": "object", - "properties": { - "dnsRuleId": { - "type": "string", - "description": "Identifies the DNS Rule" - }, - "domainName": { - "type": "string", - "description": "FQDN of the DNS rule" - }, - "ipAddress": { - "type": "string", - "description": "IP address given by the DNS rule" - }, - "ipAddressType": { - "$ref": "#/components/schemas/IpAddressType" - }, - "ttl": { - "type": "integer", - "description": "Time-to-live value", - "contentEncoding": "int32" - } - } - }, - "IpAddressType": { - "title": "IpAddressType", - "enum": [ - "IP_V6", - "IP_V4" - ], - "type": "string", - "description": "Specifies the IP address type", - "examples": [ - "IP_V6" - ] - }, - "FeatureDependency": { - "title": "FeatureDependency", - "required": [ - "featureName", - "version" - ], - "type": "object", - "properties": { - "featureName": { - "type": "string", - "description": "The name of the feature, for example, UserApps, UEIdentity, etc." - }, - "version": { - "type": "string", - "description": "The version of the feature." - } - } - }, - "InterfaceDescriptor": { - "title": "InterfaceDescriptor", - "required": [ - "interfaceType" - ], - "type": "object", - "properties": { - "dstIPAddress": { - "type": "string", - "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface." - }, - "dstMACAddress": { - "type": "string", - "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface." - }, - "interfaceType": { - "$ref": "#/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" - } - } - }, - "InterfaceType": { - "title": "InterfaceType", - "enum": [ - "TUNNEL", - "MAC", - "IP" - ], - "type": "string", - "description": "Type of interface.", - "examples": [ - "TUNNEL" - ] - }, - "LatencyDescriptor": { - "title": "LatencyDescriptor", - "required": [ - "maxLatency" - ], + "KeyValuePairs": { "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" - } + "additionalProperties": { + "type": "object" } }, "LinkType": { @@ -2567,88 +3070,6 @@ } } }, - "ServiceDependency": { - "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." - }, - "serCategory": { - "type": "object", - "description": "See MEC011" - }, - "serName": { - "type": "string", - "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." - }, - "version": { - "type": "string", - "description": "The version of the service." - } - } - }, - "ServiceDescriptor": { - "title": "ServiceDescriptor", - "required": [ - "serName", - "version" - ], - "type": "object", - "properties": { - "serName": { - "type": "string", - "description": "The name of the service, for example, RNIS, LocationService, etc." - }, - "serCategory": { - "type": "object", - "description": "See MEC011" - }, - "version": { - "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.'" - }, - "TransportsSupported": { - "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.'" - }, "TimeStamp": { "title": "TimeStamp", "required": [ @@ -2669,274 +3090,6 @@ } } }, - "TrafficFilter": { - "title": "TrafficFilter", - "type": "object", - "properties": { - "dSCP": { - "type": "integer", - "description": "Used to match all IPv4 packets that have the same DSCP.", - "contentEncoding": "int32" - }, - "dstAddress": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." - }, - "dstPort": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "A port or a range of ports." - }, - "dstTunnelPort": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." - }, - "protocol": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "Specify the protocol of the traffic filter." - }, - "qCI": { - "type": "integer", - "description": "Used to match all packets that have the same QCI.", - "contentEncoding": "int32" - }, - "srcAddress": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." - }, - "srcPort": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "A port or a range of ports." - }, - "srcTunnelAddress": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." - }, - "srcTunnelPort": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." - }, - "tC": { - "type": "integer", - "description": "Used to match all IPv6 packets that have the same TC.", - "contentEncoding": "int32" - }, - "tag": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for tag based traffic rule." - }, - "tgtTunnelAddress": { - "minItems": 0, - "type": "array", - "items": { - "type": "string" - }, - "description": "Used for GTP tunnel based traffic rule." - } - } - }, - "TrafficRuleDescriptor": { - "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" - }, - "trafficFilter": { - "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." - } - } - }, - "Action": { - "title": "Action", - "enum": [ - "DROP", - "FORWARD_DECAPSULATED", - "FORWARD_AS_IS", - "PASSTHROUGH", - "DUPLICATED_DECAPSULATED", - "DUPLICATE_AS_IS" - ], - "type": "string", - "description": "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'", - "examples": [ - "DROP" - ] - }, - "FilterType": { - "title": "FilterType", - "enum": [ - "FLOW", - "PACKET" - ], - "type": "string", - "description": "Definition of filter type: per FLOW or PACKET", - "examples": [ - "FLOW" - ] - }, - "TransportDependency": { - "title": "TransportDependency", - "required": [ - "labels", - "serializers", - "transport" - ], - "type": "object", - "properties": { - "labels": { - "minItems": 1, - "type": "array", - "items": { - "type": "string" - }, - "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table." - }, - "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", - "required": [ - "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." - }, - "security": { - "type": "object", - "description": "See MEC011" - }, - "type": { - "type": "string" - }, - "version": { - "type": "string", - "description": "The version of the protocol used." - } - } - }, - "TunnelInfo": { - "title": "TunnelInfo", - "required": [ - "tunnelDstAddress", - "tunnelSrcAddress", - "tunnelType" - ], - "type": "object", - "properties": { - "tunnelDstAddress": { - "type": "string", - "description": "Destination address of the tunnel." - }, - "tunnelSpecificData": { - "type": "string" - }, - "tunnelSrcAddress": { - "type": "string", - "description": "Source address of the tunnel." - }, - "tunnelType": { - "$ref": "#/components/schemas/TunnelType" - } - } - }, - "TunnelType": { - "title": "TunnelType", - "enum": [ - "GTP-U", - "GRE" - ], - "type": "string", - "description": "Type of tunnel.", - "examples": [ - "GTP-U" - ] - }, "OperationalState": { "title": "OperationalState", "enum": [ diff --git a/MEC010-2_AppPkgMgmt.yaml b/MEC010-2_AppPkgMgmt.yaml index f12fde3..65c03ce 100644 --- a/MEC010-2_AppPkgMgmt.yaml +++ b/MEC010-2_AppPkgMgmt.yaml @@ -9,12 +9,12 @@ info: name: ETSI Forge url: https://forge.etsi.org/rep/mec/gs010-2-app-pkg-lcm-api email: cti_support@etsi.org - version: '2.1.1' + version: '2.2.1' jsonSchemaDialect: https://json-schema.org/draft/2020-12/schema externalDocs: - description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.1.1' - url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.01.01_60/gs_MEC01002v020101p.pdf + description: 'ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management, v2.2.1' + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/01002/02.02.01_60/gs_MEC01002v020201p.pdf' tags: - name: app-pkgm description: App Package management @@ -28,8 +28,8 @@ paths: post: tags: - app-pkgm - summary: 'Create a resource for on-boarding an application package to a MEO' - description: Create a resource for on-boarding an application package to a MEO + summary: 'Create a resource for on-boarding an application package to a MEO/MEAO' + description: Create a resource for on-boarding an application package to a MEO/MEAO operationId: app_packagesPOST parameters: [] requestBody: @@ -46,10 +46,8 @@ paths: content: application/json: schema: - type: array - items: - $ref: '#/components/schemas/AppPkgInfo' - description: '' + $ref: '#/components/schemas/AppPkgInfo' + description: The response body shall contain a representation of the application package resource contentMediaType: application/json '400': description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' @@ -97,8 +95,8 @@ paths: get: tags: - app-pkgm - summary: Queries information relating to on-boarded application packages in the MEO' - description: queries information relating to on-boarded application packages in the MEO + summary: Queries information relating to on-boarded application packages in the MEO/MEAO' + description: queries information relating to on-boarded application packages in the MEO/MEAO operationId: app_packagesGET parameters: - name: filter @@ -192,6 +190,174 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] + + /onboarded_app_packages: + post: + tags: + - app-pkgm + summary: 'Create a resource for on-boarding an application package to a MEO/MEAO' + description: Create a resource for on-boarding an application package to a MEO/MEAO + operationId: onboarded_app_packagesPOST + parameters: [] + requestBody: + description: Resource to be created + content: + application/json: + schema: + $ref: '#/components/schemas/CreateAppPkg' + required: true + responses: + '201': + description: Successful response for resource creation + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppPkgInfo' + description: The response body shall contain a representation of the application package resource + contentMediaType: application/json + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + get: + tags: + - app-pkgm + summary: Queries information relating to on-boarded application packages in the MEO/MEAO' + description: queries information relating to on-boarded application packages in the MEO/MEAO + operationId: onboarded_app_packagesGET + parameters: + - name: filter + in: query + description: Attribute-based filtering parameters according to ETSI GS MEC 009 + style: form + explode: true + schema: + type: string + - name: all_fields + in: query + description: Include all complex attributes in the response. + style: form + explode: true + schema: + type: string + - name: fields + in: query + description: Complex attributes of AppPkgInfo to be included into the response + style: form + explode: true + schema: + type: string + - name: exclude_fields + in: query + description: Complex attributes of AppPkgInfo to be excluded from the response. + style: form + explode: true + schema: + type: string + - name: exclude_default + in: query + description: Indicates to exclude the following complex attributes of AppPkgInfo from the response. + style: form + explode: true + schema: + type: string + responses: + '200': + description: Contains a representation of the application package resource + headers: {} + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AppPkgInfo' + description: '' + contentMediaType: application/json + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_packages/{appPkgId}: get: tags: @@ -261,8 +427,8 @@ paths: delete: tags: - app-pkgm - summary: 'Deletes an individual application package resources' - description: Deletes an individual application package resources + summary: 'Deletes an individual application package resources in MEO/MEAO' + description: Deletes an individual application package resources in MEO/MEAO operationId: app_packageDELETE parameters: - name: appPkgId @@ -335,7 +501,7 @@ paths: schema: type: string requestBody: - description: Operational state to be set + description: Parameters for application package information modification. content: application/json: schema: @@ -400,6 +566,216 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] + + /onboarded_app_packages/{appPkgId}: + get: + tags: + - app-pkgm + summary: 'Queries the information related to individual application package resources' + description: Queries the information related to individual application package resources + operationId: onboarded_app_packageGET + parameters: + - name: appPkgId + in: path + description: Identifier of an individual application package resource + required: true + style: simple + schema: + type: string + responses: + '200': + description: Contains a representation of the application package resource + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppPkgInfo' + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + delete: + tags: + - app-pkgm + summary: 'Deletes an individual application package resources in MEO/MEAO' + description: Deletes an individual application package resources in MEO/MEAO + operationId: onboarded_app_packageDELETE + parameters: + - name: appPkgId + in: path + description: Identifier of an individual application package resource + required: true + style: simple + schema: + type: string + responses: + '204': + description: No Content + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + patch: + tags: + - app-pkgm + summary: 'Updates the operational state of an individual application package resource' + description: Updates the operational state of an individual application package resources + operationId: onboarded_app_packagePATCH + parameters: + - name: appPkgId + in: path + description: Identifier of an individual application package resource + required: true + style: simple + schema: + type: string + requestBody: + description: Parameters for application package information modification. + content: + application/json: + schema: + $ref: '#/components/schemas/AppPkgInfoModifications' + required: true + responses: + '200': + description: Shows that the operation has been completed successfully + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppPkgInfoModifications' + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /subscriptions: post: tags: @@ -485,8 +861,8 @@ paths: get: tags: - app-pkgm - summary: 'used to retrieve the information of subscriptions to individual application package resource in MEO' - description: used to retrieve the information of subscriptions to individual application package resource in MEO package + summary: 'used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO' + description: used to retrieve the information of subscriptions to individual application package resource in MEO or MEAO package operationId: subscriptionsGET parameters: [] responses: @@ -558,7 +934,7 @@ paths: type: string responses: '200': - description: Representation of the resource. + description: a response body containing a representation of the resource shall be returned. headers: {} content: application/json: @@ -610,8 +986,8 @@ paths: delete: tags: - app-pkgm - summary: 'Deletes the individual subscription to notifications about application package changes in MEO.' - description: Deletes the individual subscription to notifications about application package changes in MEO. + summary: 'Deletes the individual subscription to notifications about application package changes in MEO or MEAO.' + description: Deletes the individual subscription to notifications about application package changes in MEO or MEAO. operationId: individualSubscriptionDELETE parameters: - name: subscriptionId @@ -884,7 +1260,7 @@ paths: content: application/zip: {} '206': - description: Partial content + description: On success, if the MEO or MEAO supports range requests, a single consecutive byte range from the content of the application package file shall be returned. headers: {} content: application/zip: {} @@ -1031,7 +1407,7 @@ paths: headers: {} content: {} '206': - description: Partial content + 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': @@ -1209,6 +1585,8 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] + + components: schemas: AppD: @@ -1229,10 +1607,9 @@ components: type: string description: Identifier of this MEC application descriptor. This attribute shall be globally unique. See note 1. appDNSRule: - minItems: 0 type: array items: - $ref: '#/components/schemas/DNSRuleDescriptor' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/DNSRuleDescriptor' description: Describes DNS rules the MEC application requires. appDVersion: type: string @@ -1241,28 +1618,25 @@ components: type: string description: Human readable description of the MEC application. appExtCpd: - minItems: 0 type: array items: $ref: '#/components/schemas/AppExternalCpd' description: Describes external interface(s) exposed by this MEC application. appFeatureOptional: - minItems: 0 type: array items: - $ref: '#/components/schemas/FeatureDependency' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/FeatureDependency' description: Describes features a MEC application may use if available. appFeatureRequired: - minItems: 0 type: array items: - $ref: '#/components/schemas/FeatureDependency' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/FeatureDependency' description: Describes features a MEC application requires to run. appInfoName: type: string description: Human readable name for the MEC application. appLatency: - $ref: '#/components/schemas/LatencyDescriptor' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/LatencyDescriptor' appName: type: string description: Name to identify the MEC application. @@ -1270,62 +1644,61 @@ components: type: string description: Provider of the application and of the AppD. appServiceOptional: - minItems: 0 type: array items: - $ref: '#/components/schemas/ServiceDependency' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/ServiceDependency' description: Describes services a MEC application may use if available. appServiceProduced: - minItems: 0 type: array items: - $ref: '#/components/schemas/ServiceDescriptor' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/ServiceDescriptor' description: Describes services a MEC application is able to produce to the platform or other MEC applications. Only relevant for service-producing apps. appServiceRequired: - minItems: 0 type: array items: - $ref: '#/components/schemas/ServiceDependency' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/ServiceDependency' description: Describes services a MEC application requires to run. appSoftVersion: type: string description: Identifies the version of software of the MEC application. appTrafficRule: - minItems: 0 type: array items: - $ref: '#/components/schemas/TrafficRuleDescriptor' + $ref: './MEC010p2_v221_definitions.yaml#/definitions/TrafficRuleDescriptor' description: Describes traffic rules the MEC application requires. changeAppInstanceStateOpConfig: type: string description: NFV mecVersion: - minItems: 1 type: array items: type: string - description: Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. + description: Identifies version(s) of MEC system compatible with the MEC application described in this version of the AppD. The value shall be formatted as comma-separated list of strings. Each entry shall have the format .. where , and are decimal numbers representing the version of the present document. Whitespace between list entries shall be trimmed before validation. swImageDescriptor: type: string - description: Ref NFV + description: Describes the descriptors of the software image to be used by the virtualisation container used to realize this MEC application. terminateAppInstanceOpConfig: type: string description: NFV transportDependencies: - minItems: 0 type: array items: - $ref: '#/components/schemas/TransportDependency' + $ref: './MEC010p2_v221_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: - type: string - description: Ref NFV + 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: - minItems: 0 type: array items: type: string description: Defines descriptors of virtual storage resources to be used by the MEC application. + userContextTransferCapability: + $ref: './MEC010p2_v221_definitions.yaml#/definitions/UserContextTransferCapability' + appNetworkPolicy: + $ref: './MEC010p2_v221_definitions.yaml#/definitions/AppNetworkPolicy' + AppExternalCpd: title: AppExternalCpd required: @@ -1336,7 +1709,6 @@ components: type: object description: All attributes inherited from Cpd. virtualNetworkInterfaceRequirements: - minItems: 0 type: array items: type: string @@ -1354,6 +1726,7 @@ components: - onboardingState - operationalState - usageState + - mecInfo - _links type: object properties: @@ -1377,6 +1750,9 @@ components: description: Identifies the version of the application descriptor. checksum: $ref: '#/components/schemas/Checksum' + signingCertificate: + type: string + description: The singleton signing certificate if it is included as a file in the AppD archive. softwareImages: type: object description: Information of application software image in application package. Type is TBD @@ -1389,11 +1765,20 @@ components: $ref: '#/components/schemas/AppPkg.OperationalState' usageState: $ref: '#/components/schemas/UsageState' + mecInfo: + type: array + description: The MEC version that compatible with this application. This information is copied from the AppD. + items: + type: string + onBoardingFailureDetails: + description: Failure details of current onboarding procedure + $ref: '#/components/schemas/ProblemDetails' userDefinedData: - type: object + $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 @@ -1404,6 +1789,7 @@ components: operationState: $ref: '#/components/schemas/OperationState' description: "'The data type represents the operational state for an application package resource'" + AppPkg.OperationalState: title: AppPkg.OperationalState enum: @@ -1413,6 +1799,7 @@ components: description: 'Operational state of the onboarded application package: •ENABLED: the application package can be used for instantiation of new application instances. •DISABLED: the application package cannot be used for further application instantiation requests.' examples: - ENABLED + OnboardingState: title: OnboardingState enum: @@ -1447,6 +1834,8 @@ components: $ref: '#/components/schemas/LinkType' appPkgContent: $ref: '#/components/schemas/LinkType' + vnfPkgInfo: + $ref: '#/components/schemas/LinkType' description: Links to resources related to this resource. AppPkgNotification: title: AppPkgNotification @@ -1513,25 +1902,27 @@ components: properties: id: type: string - description: "''" + description: Identifier of the subscription to application package notification. subscriptionType: - $ref: '#/components/schemas/AppPkg.SubscriptionType' + description: Type of subscription. + $ref: '#/components/schemas/AppPkgSubscriptionType' callbackUri: type: string description: The URI of the endpoint for the notification to be sent to. _links: $ref: '#/components/schemas/AppPkgSubscriptionInfo.links' description: "'The data type represents a subscription to notification of application package management for the onboarding, or operational state change of application package'" - AppPkg.SubscriptionType: - title: AppPkg.SubscriptionType + + AppPkgSubscriptionType: + title: AppPkgSubscriptionType enum: - - AppPackageOnBoarding - - AppPacakgeOperationChange - - AppPackageDeletion + - AppPackageOnBoardingSubscription + - AppPackageChangeSubscription + - AppPackageDeletionSubscription type: string - description: Subscribed notification type. + description: type of a subscription. examples: - - AppPackageOnBoarding + - AppPackageOnBoardingSubscription AppPkgSubscriptionInfo.links: title: AppPkgSubscriptionInfo.links required: @@ -1568,43 +1959,70 @@ components: title: Subscriptions.AppPkgSubscription required: - href - - subsctiptionType + - subscriptionType type: object properties: href: type: string description: The URI referring to the subscription. - subsctiptionType: - $ref: '#/components/schemas/SubsctiptionType.AppPkg' + subscriptionType: + $ref: '#/components/schemas/AppPkgSubscriptionType' description: "'The data type represents the input parameters of \"subscription operation\" to notification of application package management for the onboarding, or operational state change of application package.'" AppPkgSubscription: title: AppPkgSubscription required: - callbackUri - - subsctiptionType + - subscriptionType 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' + subscriptionType: + $ref: '#/components/schemas/AppPkgSubscriptionType' appPkgFilter: type: array items: - type: string - description: '' + $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.'" - SubsctiptionType.AppPkg: - title: SubsctiptionType.AppPkg - enum: - - AppPackageOnBoarding - - AppPacakgeOperationChange - - AppPackageDeletion - type: string - description: "'Subscribed notification type'" - examples: - - AppPackageOnBoarding + + + AppPkgFilter: + title: AppPkgFilter + type: object + properties: + appPkgInfoId: + type: string + description: Match the application package identifier which is allocated by the MEO. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. + appDId: + type: string + description: Match the application descriptor identifier which is allocated by the application provider. The attributes "appPkgInfoId ", and "appDId" are alternatives to reference particular application package in a filter. + appProvider: + type: string + description: Match the provider's name of the onboarded application. + appName: + type: string + description: Match the name of the onboarded application. + appSoftwareVersion: + type: string + description: Match the software version of the application package. + appDVersion: + type: string + description: Match the version of the application descriptor. + operationalState: + type: string + description: Match particular operational state of the application package. May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise. + enum: + - ENABLED + - DISABLED + usageState: + type: string + description: Match particular usage state of the application package. May be present if the "subscriptionType" attribute contains the value "AppPackageChangeSubscription", and shall be absent otherwise. + enum: + - N_USE + - NOT_IN_USE + Checksum: title: Checksum required: @@ -1631,106 +2049,25 @@ components: type: string description: Name of the application package to be onboarded. appPkgPath: - type: string + type: uri appPkgVersion: type: string description: >- - Version of the application package to be onboarded. - - The appPkgName with appPkgVersion can be used to uniquely identify the application package. + 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: - type: object + $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'" - DNSRuleDescriptor: - title: DNSRuleDescriptor - required: - - dnsRuleId - - domainName - - ipAddress - - ipAddressType + + KeyValuePairs: 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 - IpAddressType: - title: IpAddressType - enum: - - IP_V6 - - IP_V4 - type: string - description: Specifies the IP address type - examples: - - IP_V6 - FeatureDependency: - title: FeatureDependency - required: - - featureName - - version - type: object - properties: - featureName: - type: string - description: The name of the feature, for example, UserApps, UEIdentity, etc. - version: - type: string - description: The version of the feature. - InterfaceDescriptor: - title: InterfaceDescriptor - required: - - interfaceType - type: object - properties: - dstIPAddress: - type: string - description: If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. - dstMACAddress: - type: string - description: If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. - interfaceType: - $ref: '#/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' - InterfaceType: - title: InterfaceType - enum: - - TUNNEL - - MAC - - IP - type: string - description: Type of interface. - examples: - - TUNNEL - LatencyDescriptor: - title: LatencyDescriptor - required: - - maxLatency - type: object - properties: - maxLatency: - type: integer - description: The value of the maximum latency in nano seconds tolerated by the MEC application. See note. - contentEncoding: int32 + additionalProperties: + type: object + LinkType: title: LinkType required: @@ -1759,70 +2096,7 @@ components: description: A short, human-readable summary of the problem type type: type: string - description: A URI reference according to IETF RFC 3986 that identifies the problem type - ServiceDependency: - 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]. - - The format of this attribute is left for the data model design stage. - serCategory: - type: object - description: See MEC011 - serName: - type: string - description: The name of the service, for example, RNIS, LocationService, etc. - serTransportDependencies: - 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. - version: - type: string - description: The version of the service. - ServiceDescriptor: - title: ServiceDescriptor - required: - - serName - - version - type: object - properties: - serName: - type: string - description: The name of the service, for example, RNIS, LocationService, etc. - serCategory: - type: object - description: See MEC011 - version: - 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.'" - TransportsSupported: - 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.'" + description: A URI reference according to IETF RFC 3986 that identifies the problem type TimeStamp: title: TimeStamp required: @@ -1838,207 +2112,7 @@ components: type: integer description: The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. contentEncoding: int32 - TrafficFilter: - title: TrafficFilter - type: object - properties: - dSCP: - type: integer - description: Used to match all IPv4 packets that have the same DSCP. - contentEncoding: int32 - dstAddress: - minItems: 0 - type: array - items: - type: string - description: A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. - dstPort: - minItems: 0 - type: array - items: - type: string - description: A port or a range of ports. - dstTunnelPort: - minItems: 0 - type: array - items: - type: string - description: Used for GTP tunnel based traffic rule. - protocol: - minItems: 0 - type: array - items: - type: string - description: Specify the protocol of the traffic filter. - qCI: - type: integer - description: Used to match all packets that have the same QCI. - contentEncoding: int32 - srcAddress: - minItems: 0 - type: array - items: - type: string - description: An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. - srcPort: - minItems: 0 - type: array - items: - type: string - description: A port or a range of ports. - srcTunnelAddress: - minItems: 0 - type: array - items: - type: string - description: Used for GTP tunnel based traffic rule. - srcTunnelPort: - minItems: 0 - type: array - items: - type: string - description: Used for GTP tunnel based traffic rule. - tC: - type: integer - description: Used to match all IPv6 packets that have the same TC. - contentEncoding: int32 - tag: - minItems: 0 - type: array - items: - type: string - description: Used for tag based traffic rule. - tgtTunnelAddress: - minItems: 0 - type: array - items: - type: string - description: Used for GTP tunnel based traffic rule. - TrafficRuleDescriptor: - 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 - trafficFilter: - 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. - Action: - title: Action - enum: - - DROP - - FORWARD_DECAPSULATED - - FORWARD_AS_IS - - PASSTHROUGH - - DUPLICATED_DECAPSULATED - - DUPLICATE_AS_IS - type: string - description: "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'" - examples: - - DROP - FilterType: - title: FilterType - enum: - - FLOW - - PACKET - type: string - description: 'Definition of filter type: per FLOW or PACKET' - examples: - - FLOW - TransportDependency: - title: TransportDependency - required: - - labels - - serializers - - transport - type: object - properties: - labels: - minItems: 1 - type: array - items: - type: string - description: Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. - 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 - required: - - 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. - security: - type: object - description: See MEC011 - type: - type: string - version: - type: string - description: The version of the protocol used. - TunnelInfo: - title: TunnelInfo - required: - - tunnelDstAddress - - tunnelSrcAddress - - tunnelType - type: object - properties: - tunnelDstAddress: - type: string - description: Destination address of the tunnel. - tunnelSpecificData: - type: string - tunnelSrcAddress: - type: string - description: Source address of the tunnel. - tunnelType: - $ref: '#/components/schemas/TunnelType' - TunnelType: - title: TunnelType - enum: - - GTP-U - - GRE - type: string - description: Type of tunnel. - examples: - - GTP-U + OperationalState: title: OperationalState enum: @@ -2055,6 +2129,8 @@ components: type: string examples: - DISABLED + + security: - {} diff --git a/MEC010p2_v221_definitions.json b/MEC010p2_v221_definitions.json new file mode 100644 index 0000000..5eef9b3 --- /dev/null +++ b/MEC010p2_v221_definitions.json @@ -0,0 +1,590 @@ +{ + "definitions": { + "ConfigPlatformForAppRequest": { + "type": "object", + "properties": { + "appServiceRequired": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDependency" + } + }, + "appServiceOptional": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDependency" + } + }, + "appServiceProduced": { + "type": "array", + "items": { + "$ref": "#/definitions/ServiceDescriptor" + } + }, + "appFeatureRequired": { + "type": "array", + "items": { + "$ref": "#/definitions/FeatureDependency" + } + }, + "appFeatureOptional": { + "type": "array", + "items": { + "$ref": "#/definitions/FeatureDependency" + } + }, + "transportDependencies": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportDependency" + } + }, + "appTrafficRule": { + "type": "array", + "items": { + "$ref": "#/definitions/TrafficRuleDescriptor" + } + }, + "appDNSRule": { + "type": "array", + "items": { + "$ref": "#/definitions/DNSRuleDescriptor" + } + }, + "appLatency": { + "$ref": "#/definitions/LatencyDescriptor" + }, + "userContextTransferCapability": { + "$ref": "#/definitions/UserContextTransferCapability" + }, + "appNetworkPolicy": { + "$ref": "#/definitions/AppNetworkPolicy" + } + } + }, + "ServiceDependency": { + "title": "ServiceDependency", + "required": [ + "serName", + "version" + ], + "type": "object", + "properties": { + "requestedPermissions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. The format of this attribute is left for the data model design stage." + }, + "serCategory": { + "type": "object", + "description": "See MEC011" + }, + "serName": { + "type": "string", + "description": "The name of the service, for example, RNIS, LocationService, etc." + }, + "serTransportDependencies": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportDependency" + }, + "description": "Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note." + }, + "version": { + "type": "string", + "description": "The version of the service." + } + } + }, + "TransportDependency": { + "title": "TransportDependency", + "required": [ + "labels", + "serializers", + "transport" + ], + "type": "object", + "properties": { + "labels": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table." + }, + "serializers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport." + }, + "transport": { + "$ref": "#/definitions/TransportDescriptor" + } + } + }, + "TransportDescriptor": { + "title": "TransportDescriptor", + "required": [ + "name", + "protocol", + "security", + "type", + "version" + ], + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The name of this transport." + }, + "description": { + "type": "string", + "description": "Human-readable description of this transport." + }, + "protocol": { + "type": "string", + "description": "The name of the protocol used. Shall be set to HTTP for a REST API." + }, + "security": { + "type": "object", + "description": "See MEC011" + }, + "type": { + "type": "string" + }, + "version": { + "type": "string", + "description": "The version of the protocol used." + }, + "implSpecificInfo": { + "type": "object", + "description": "Additional implementation specific details of the transport." + } + } + }, + "ServiceDescriptor": { + "title": "ServiceDescriptor", + "description": "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'", + "required": [ + "serName", + "version", + "transport" + ], + "type": "object", + "properties": { + "serName": { + "type": "string", + "description": "The name of the service, for example, RNIS, LocationService, etc." + }, + "serCategory": { + "type": "object", + "description": "See MEC011" + }, + "version": { + "type": "string", + "description": "The version of the service." + }, + "transportsSupported": { + "type": "array", + "items": { + "$ref": "#/definitions/TransportsSupported" + } + } + } + }, + "TransportsSupported": { + "title": "TransportsSupported", + "type": "object", + "required": [ + "serializers" + ], + "properties": { + "transport": { + "$ref": "#/definitions/TransportDescriptor" + }, + "serializers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" + } + }, + "description": "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" + }, + "FeatureDependency": { + "title": "FeatureDependency", + "required": [ + "featureName", + "version" + ], + "type": "object", + "properties": { + "featureName": { + "type": "string", + "description": "The name of the feature, for example, UserApps, UEIdentity, etc." + }, + "version": { + "type": "string", + "description": "The version of the feature." + } + } + }, + "TrafficRuleDescriptor": { + "title": "TrafficRuleDescriptor", + "required": [ + "action", + "filterType", + "priority", + "trafficFilter", + "trafficRuleId" + ], + "type": "object", + "properties": { + "action": { + "$ref": "#/definitions/Action" + }, + "dstInterface": { + "maxItems": 2, + "type": "array", + "items": { + "$ref": "#/definitions/InterfaceDescriptor" + }, + "description": "" + }, + "filterType": { + "$ref": "#/definitions/FilterType" + }, + "priority": { + "type": "integer", + "description": "Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.", + "contentEncoding": "int32" + }, + "trafficFilter": { + "minItems": 1, + "type": "array", + "items": { + "$ref": "#/definitions/TrafficFilter" + }, + "description": "The filter used to identify specific flow/packets that need to be handled by the MEC host." + }, + "trafficRuleId": { + "type": "string", + "description": "Identifies the traffic rule." + } + } + }, + "Action": { + "title": "Action", + "enum": [ + "DROP", + "FORWARD_DECAPSULATED", + "FORWARD_AS_IS", + "PASSTHROUGH", + "DUPLICATED_DECAPSULATED", + "DUPLICATE_AS_IS" + ], + "type": "string", + "description": "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'", + "examples": [ + "DROP" + ] + }, + "TrafficFilter": { + "title": "TrafficFilter", + "type": "object", + "properties": { + "dSCP": { + "type": "integer", + "description": "Used to match all IPv4 packets that have the same DSCP.", + "contentEncoding": "int32" + }, + "dstAddress": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." + }, + "dstPort": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A port or a range of ports." + }, + "dstTunnelPort": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Used for GTP tunnel based traffic rule." + }, + "protocol": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specify the protocol of the traffic filter." + }, + "qCI": { + "type": "integer", + "description": "Used to match all packets that have the same QCI.", + "contentEncoding": "int32" + }, + "srcAddress": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes." + }, + "srcPort": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A port or a range of ports." + }, + "srcTunnelAddress": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Used for GTP tunnel based traffic rule." + }, + "srcTunnelPort": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Used for GTP tunnel based traffic rule." + }, + "tC": { + "type": "integer", + "description": "Used to match all IPv6 packets that have the same TC.", + "contentEncoding": "int32" + }, + "tag": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Used for tag based traffic rule." + }, + "tgtTunnelAddress": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Used for GTP tunnel based traffic rule." + }, + "uri": { + "type": "array", + "items": { + "type": "string" + } + }, + "packetLabel": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "DNSRuleDescriptor": { + "title": "DNSRuleDescriptor", + "required": [ + "dnsRuleId", + "domainName", + "ipAddress", + "ipAddressType" + ], + "type": "object", + "properties": { + "dnsRuleId": { + "type": "string", + "description": "Identifies the DNS Rule" + }, + "domainName": { + "type": "string", + "description": "FQDN of the DNS rule" + }, + "ipAddress": { + "type": "string", + "description": "IP address given by the DNS rule" + }, + "ipAddressType": { + "$ref": "#/definitions/IpAddressType" + }, + "ttl": { + "type": "integer", + "description": "Time-to-live value", + "contentEncoding": "int32" + } + } + }, + "IpAddressType": { + "title": "IpAddressType", + "enum": [ + "IP_V6", + "IP_V4" + ], + "type": "string", + "description": "Specifies the IP address type", + "examples": [ + "IP_V6" + ] + }, + "LatencyDescriptor": { + "title": "LatencyDescriptor", + "required": [ + "maxLatency" + ], + "type": "object", + "properties": { + "maxLatency": { + "type": "integer", + "description": "The value of the maximum latency in nano seconds tolerated by the MEC application. See note.", + "contentEncoding": "int32" + } + } + }, + "UserContextTransferCapability": { + "title": "UserContextTransferCapability", + "required": [ + "statefulApplication" + ], + "type": "object", + "properties": { + "statefulApplication": { + "type": "boolean" + }, + "userContextTransferSupport": { + "type": "boolean" + } + } + }, + "AppNetworkPolicy": { + "title": "AppNetworkPolicy", + "required": [ + "steeredNetwork" + ], + "type": "object", + "properties": { + "steeredNetwork": { + "$ref": "#/definitions/AppNetworkPolicy.steeredNetwork" + } + } + }, + "AppNetworkPolicy.steeredNetwork": { + "title": "AppNetworkPolicy.steeredNetwork", + "type": "object", + "properties": { + "cellularNetwork": { + "type": "boolean" + }, + "wi-fiNetwork": { + "type": "boolean" + }, + "fixedAccessNetwork": { + "type": "boolean" + } + } + }, + "InterfaceDescriptor": { + "title": "InterfaceDescriptor", + "required": [ + "interfaceType" + ], + "type": "object", + "properties": { + "dstIPAddress": { + "type": "string", + "description": "If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface." + }, + "dstMACAddress": { + "type": "string", + "description": "If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface." + }, + "interfaceType": { + "$ref": "#/definitions/InterfaceType" + }, + "srcMACAddress": { + "type": "string", + "description": "If the interface type is MAC, the source address identifies the MAC address of the interface." + }, + "tunnelInfo": { + "$ref": "#/definitions/TunnelInfo" + } + } + }, + "InterfaceType": { + "title": "InterfaceType", + "enum": [ + "TUNNEL", + "MAC", + "IP" + ], + "type": "string", + "description": "Type of interface.", + "examples": [ + "TUNNEL" + ] + }, + "TunnelInfo": { + "title": "TunnelInfo", + "required": [ + "tunnelDstAddress", + "tunnelSrcAddress", + "tunnelType" + ], + "type": "object", + "properties": { + "tunnelDstAddress": { + "type": "string", + "description": "Destination address of the tunnel." + }, + "tunnelSpecificData": { + "type": "string" + }, + "tunnelSrcAddress": { + "type": "string", + "description": "Source address of the tunnel." + }, + "tunnelType": { + "$ref": "#/definitions/TunnelType" + } + } + }, + "TunnelType": { + "title": "TunnelType", + "enum": [ + "GTP-U", + "GRE" + ], + "type": "string", + "description": "Type of tunnel.", + "examples": [ + "GTP-U" + ] + }, + "FilterType": { + "title": "FilterType", + "enum": [ + "FLOW", + "PACKET" + ], + "type": "string", + "description": "Definition of filter type: per FLOW or PACKET", + "examples": [ + "FLOW" + ] + } + } + } \ No newline at end of file diff --git a/MEC010p2_v221_definitions.yaml b/MEC010p2_v221_definitions.yaml new file mode 100644 index 0000000..1c054af --- /dev/null +++ b/MEC010p2_v221_definitions.yaml @@ -0,0 +1,426 @@ + definitions: + ConfigPlatformForAppRequest: + type: object + properties: + appServiceRequired: + type: array + items: + $ref: '#/definitions/ServiceDependency' + appServiceOptional: + type: array + items: + $ref: '#/definitions/ServiceDependency' + appServiceProduced: + type: array + items: + $ref: '#/definitions/ServiceDescriptor' + appFeatureRequired: + type: array + items: + $ref: '#/definitions/FeatureDependency' + appFeatureOptional: + type: array + items: + $ref: '#/definitions/FeatureDependency' + transportDependencies: + type: array + items: + $ref: '#/definitions/TransportDependency' + appTrafficRule: + type: array + items: + $ref: '#/definitions/TrafficRuleDescriptor' + appDNSRule: + type: array + items: + $ref: '#/definitions/DNSRuleDescriptor' + appLatency: + $ref: '#/definitions/LatencyDescriptor' + userContextTransferCapability: + $ref: '#/definitions/UserContextTransferCapability' + appNetworkPolicy: + $ref: '#/definitions/AppNetworkPolicy' + ServiceDependency: + title: ServiceDependency + required: + - serName + - version + type: object + properties: + requestedPermissions: + type: array + items: + type: string + description: >- + Requested permissions regarding the access of the application to the service. See clause 8.2 of ETSI GS MEC 009. + The format of this attribute is left for the data model design stage. + serCategory: + type: object + description: See MEC011 + serName: + type: string + description: The name of the service, for example, RNIS, LocationService, etc. + serTransportDependencies: + type: array + items: + $ref: '#/definitions/TransportDependency' + description: Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + version: + type: string + description: The version of the service. + TransportDependency: + title: TransportDependency + required: + - labels + - serializers + - transport + type: object + properties: + labels: + type: array + items: + type: string + description: Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + serializers: + type: array + items: + type: string + description: Information about the serializers in this transport binding, as defined in the SerializerTypes type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. + transport: + $ref: '#/definitions/TransportDescriptor' + TransportDescriptor: + title: TransportDescriptor + required: + - name + - protocol + - security + - type + - version + type: object + properties: + name: + type: string + description: The name of this transport. + description: + type: string + description: Human-readable description of this transport. + protocol: + type: string + description: The name of the protocol used. Shall be set to HTTP for a REST API. + security: + type: object + description: See MEC011 + type: + type: string + version: + type: string + description: The version of the protocol used. + implSpecificInfo: + type: object + description: Additional implementation specific details of the transport. + ServiceDescriptor: + title: ServiceDescriptor + description: "'The ServiceDescriptor data type describes a MEC service produced by a service-providing MEC application.'" + required: + - serName + - version + - transport + type: object + properties: + serName: + type: string + description: The name of the service, for example, RNIS, LocationService, etc. + serCategory: + type: object + description: See MEC011 + version: + type: string + description: The version of the service. + transportsSupported: + type: array + items: + $ref: '#/definitions/TransportsSupported' + TransportsSupported: + title: TransportsSupported + type: object + required: + - serializers + properties: + transport: + $ref: '#/definitions/TransportDescriptor' + serializers: + type: array + items: + type: string + description: "'Information about the serializers in this binding, as defined in the SerializerTypes type in ETSI GS MEC 011 '" + description: "'Indicates transports and serialization formats supported made available to the service-consuming application. Defaults to REST + JSON if absent.'" + FeatureDependency: + title: FeatureDependency + required: + - featureName + - version + type: object + properties: + featureName: + type: string + description: The name of the feature, for example, UserApps, UEIdentity, etc. + version: + type: string + description: The version of the feature. + TrafficRuleDescriptor: + title: TrafficRuleDescriptor + required: + - action + - filterType + - priority + - trafficFilter + - trafficRuleId + type: object + properties: + action: + $ref: '#/definitions/Action' + dstInterface: + maxItems: 2 + type: array + items: + $ref: '#/definitions/InterfaceDescriptor' + description: '' + filterType: + $ref: '#/definitions/FilterType' + priority: + type: integer + description: Priority of this traffic rule within the range 0 to 255. If traffic rule conflicts, the one with higher priority take precedence. Value indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority. + contentEncoding: int32 + trafficFilter: + minItems: 1 + type: array + items: + $ref: '#/definitions/TrafficFilter' + description: The filter used to identify specific flow/packets that need to be handled by the MEC host. + trafficRuleId: + type: string + description: Identifies the traffic rule. + Action: + title: Action + enum: + - DROP + - FORWARD_DECAPSULATED + - FORWARD_AS_IS + - PASSTHROUGH + - DUPLICATED_DECAPSULATED + - DUPLICATE_AS_IS + type: string + description: "'Identifies the action of the MEC host data plane, when a packet matches the trafficFilter.'" + examples: + - DROP + TrafficFilter: + title: TrafficFilter + type: object + properties: + dSCP: + type: integer + description: Used to match all IPv4 packets that have the same DSCP. + contentEncoding: int32 + dstAddress: + type: array + items: + type: string + description: A IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. + dstPort: + type: array + items: + type: string + description: A port or a range of ports. + dstTunnelPort: + type: array + items: + type: string + description: Used for GTP tunnel based traffic rule. + protocol: + type: array + items: + type: string + description: Specify the protocol of the traffic filter. + qCI: + type: integer + description: Used to match all packets that have the same QCI. + contentEncoding: int32 + srcAddress: + type: array + items: + type: string + description: An IP address or a range of IP addresses.For IPv4, the IP address could be an IP address plus mask, or an individual IP address, or a range of IP addresses.For IPv6, the IP address could be an IP prefix, or a range of IP prefixes. + srcPort: + type: array + items: + type: string + description: A port or a range of ports. + srcTunnelAddress: + type: array + items: + type: string + description: Used for GTP tunnel based traffic rule. + srcTunnelPort: + type: array + items: + type: string + description: Used for GTP tunnel based traffic rule. + tC: + type: integer + description: Used to match all IPv6 packets that have the same TC. + contentEncoding: int32 + tag: + type: array + items: + type: string + description: Used for tag based traffic rule. + tgtTunnelAddress: + type: array + items: + type: string + description: Used for GTP tunnel based traffic rule. + uri: + type: array + items: + type: string + packetLabel: + type: array + items: + type: string + DNSRuleDescriptor: + title: DNSRuleDescriptor + required: + - dnsRuleId + - domainName + - ipAddress + - ipAddressType + type: object + properties: + dnsRuleId: + type: string + description: Identifies the DNS Rule + domainName: + type: string + description: FQDN of the DNS rule + ipAddress: + type: string + description: IP address given by the DNS rule + ipAddressType: + $ref: '#/definitions/IpAddressType' + ttl: + type: integer + description: Time-to-live value + contentEncoding: int32 + IpAddressType: + title: IpAddressType + enum: + - IP_V6 + - IP_V4 + type: string + description: Specifies the IP address type + examples: + - IP_V6 + LatencyDescriptor: + title: LatencyDescriptor + required: + - maxLatency + type: object + properties: + maxLatency: + type: integer + description: The value of the maximum latency in nano seconds tolerated by the MEC application. See note. + contentEncoding: int32 + UserContextTransferCapability: + title: UserContextTransferCapability + required: + - statefulApplication + type: object + properties: + statefulApplication: + type: boolean + userContextTransferSupport: + type: boolean + AppNetworkPolicy: + title: AppNetworkPolicy + required: + - steeredNetwork + type: object + properties: + steeredNetwork: + $ref: '#/definitions/AppNetworkPolicy.steeredNetwork' + AppNetworkPolicy.steeredNetwork: + title: AppNetworkPolicy.steeredNetwork + type: object + properties: + cellularNetwork: + type: boolean + wi-fiNetwork: + type: boolean + fixedAccessNetwork: + type: boolean + InterfaceDescriptor: + title: InterfaceDescriptor + required: + - interfaceType + type: object + properties: + dstIPAddress: + type: string + description: If the interface type is IP, the destination address identifies the IP address of the destination. Only used for dstInterface. + dstMACAddress: + type: string + description: If the interface type is MAC, the destination address identifies the MAC address of the destination. Only used for dstInterface. + interfaceType: + $ref: '#/definitions/InterfaceType' + srcMACAddress: + type: string + description: If the interface type is MAC, the source address identifies the MAC address of the interface. + tunnelInfo: + $ref: '#/definitions/TunnelInfo' + InterfaceType: + title: InterfaceType + enum: + - TUNNEL + - MAC + - IP + type: string + description: Type of interface. + examples: + - TUNNEL + TunnelInfo: + title: TunnelInfo + required: + - tunnelDstAddress + - tunnelSrcAddress + - tunnelType + type: object + properties: + tunnelDstAddress: + type: string + description: Destination address of the tunnel. + tunnelSpecificData: + type: string + tunnelSrcAddress: + type: string + description: Source address of the tunnel. + tunnelType: + $ref: '#/definitions/TunnelType' + TunnelType: + title: TunnelType + enum: + - GTP-U + - GRE + type: string + description: Type of tunnel. + examples: + - GTP-U + FilterType: + title: FilterType + enum: + - FLOW + - PACKET + type: string + description: 'Definition of filter type: per FLOW or PACKET' + examples: + - FLOW + -- GitLab From b8820c00f0c8b1d3643fccc18bb971d8ce58cb6b Mon Sep 17 00:00:00 2001 From: piscione Date: Tue, 15 Feb 2022 11:22:30 +0100 Subject: [PATCH 2/3] Added paths defined from clause 7.7.7 to 7.7.13 for MEC010p2 v2.2.1. Since the paths are duplicated, the YAML file cannot be converted into JSON because according to OAS, a path must be unique. --- MEC010-2_AppLcm.yaml | 722 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 638 insertions(+), 84 deletions(-) diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 3917a3a..622f442 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -744,13 +744,641 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] + + ## Resources of application lifecycle management on Mm1 + + /app_instances/{appInstanceId}/terminate: + post: + tags: + - 'app-lcm' + summary: 'terminate an application instance.' + description: terminate an application instance. + operationId: appLcmTerminatePOST + parameters: + - name: appInstanceId + in: path + description: Identifier of an individual application instance + required: true + style: simple + schema: + type: string + requestBody: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/TerminateAppRequest' + required: true + responses: + '202': + description: accepted for processing, but the processing has not yet been completed. + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_instances/{appInstanceId}/operate: + post: + tags: + - 'app-lcm' + summary: 'change the operational state, i.e. start or stop, of the application instance' + description: change the operational state, i.e. start or stop, of the application instance + operationId: appLcmOperatePOST + parameters: + - name: appInstanceId + in: path + description: Identifier of an individual application instance + required: true + style: simple + schema: + type: string + requestBody: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/OperateAppRequest' + required: true + responses: + '202': + description: accepted for processing, but the processing has not yet been completed. + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_lcm_op_occs: + get: + tags: + - 'app-lcm' + summary: 'retrieves information of operation status about multiple application instance lifecycle management operation occurrences' + description: retrieves information of operation status about multiple application instance lifecycle management operation occurrences + operationId: appLcmOpOccsGET + parameters: + - name: filter + in: query + description: Attribute-based filtering parameters according to ETSI GS MEC 009 + style: form + explode: true + schema: + type: string + - name: all_fields + in: query + description: Include all complex attributes in the response. + style: form + explode: true + schema: + type: string + - name: fields + in: query + description: Complex attributes of AppLcmOpOcc to be excluded from the response. + style: form + explode: true + schema: + type: string + - name: exclude_fields + in: query + description: Complex attributes of AppLcmOpOcc to be excluded from the response. + style: form + explode: true + schema: + type: string + - name: exclude_default + in: query + description: Indicates to exclude the following complex attributes of AppLcmOpOcc from the response. + style: form + explode: true + schema: + type: string + responses: + '200': + description: Status information for zero or more application instance lifecycle management operation occurrences was queried successfully + headers: {} + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AppLcmOpOcc' + description: '' + contentMediaType: application/json + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_lcm_op_occs/{appLcmOpOccId}: + get: + tags: + - 'app-lcm' + summary: 'reads the status information of an individual application LCM operation occurrence' + description: reads the status information of an individual application LCM operation occurrence + operationId: appLcmOpOccsbyIdGET + parameters: + - name: appLcmOpOccId + in: path + description: Identifies an individual application LCM operation occurrence + required: true + style: simple + schema: + type: string + responses: + '200': + description: Information about an application LCM operation occurrence was read successfully + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppLcmOpOcc' + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_lcm_op_occs/{appLcmOpOccId}/cancel: + post: + tags: + - 'app-lcm' + summary: 'cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state.' + description: cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state. + operationId: appLcmCancelPOST + parameters: + - name: appLcmOpOccId + in: path + description: Identifies an individual application LCM operation occurrence + required: true + style: simple + schema: + type: string + requestBody: + description: '' + content: + application/json: + schema: + $ref: '#/components/schemas/CancelMode' + required: true + responses: + '202': + description: The request was accepted for processing, but it is possible that the processing is not yet completed. + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_lcm_op_occs/{appLcmOpOccId}/fail: + post: + tags: + - 'app-lcm' + summary: marks an application lifecycle management operation occurrence as "finally failed" + description: marks an application lifecycle management operation occurrence as "finally failed" + operationId: appLcmFailPOST + parameters: + - name: appLcmOpOccId + in: path + description: Identifies an individual application LCM operation occurrence + required: true + style: simple + schema: + type: string + responses: + '202': + description: Shall be returned when the state of the application lifecycle management operation occurrence has been changed successfully + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppLcmOpOcc' + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + /app_lcm_op_occs/{appLcmOpOccId}/retry: + post: + tags: + - 'app-lcm' + summary: initiate retrying an application lifecycle operation that has experience a temporary failure + description: initiate retrying an application lifecycle operation that has experience a temporary failure + operationId: appLcmRetryPOST + parameters: + - name: appLcmOpOccId + in: path + description: Identifies an individual application LCM operation occurrence + required: true + style: simple + schema: + type: string + responses: + '202': + description: The request was accepted for processing, but it is possible that the processing is not yet completed + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] + + +## Resources of MEPM's application lifecycle management on Mm3 + /app_instances/{appInstanceId}/configure_platform_for_app: + post: + tags: + - 'app-lcm' + summary: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. + description: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. + operationId: appInstancesConfigPlatformPOST + parameters: + - name: appInstanceId + in: path + description: The identifier of the application instance. + required: true + style: simple + schema: + type: string + requestBody: + description: The payload body in the request contains the information necessary to provide configuration information in AppD + content: + application/json: + schema: + $ref: './MEC010p2_v221_definitions.yaml#/definitions/ConfigPlatformForAppRequest' + responses: + '202': + description: The request was accepted for processing, but it is possible that the processing is not yet completed + headers: {} + content: {} + '400': + description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: 'Unauthorized : used when the client did not submit credentials.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: 'Forbidden : operation is not allowed given the current status of the resource.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: 'Too Many Requests : used when a rate limiter has triggered.' + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + deprecated: false + parameters: [] /app_instances/{appInstanceId}/terminate: post: tags: - 'app-lcm' summary: 'terminate an application instance.' description: terminate an application instance. - operationId: appLcmTerminatePOST + operationId: appLcmTerminateOnMm3POST parameters: - name: appInstanceId in: path @@ -822,13 +1450,14 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] + /app_instances/{appInstanceId}/operate: post: tags: - 'app-lcm' summary: 'change the operational state, i.e. start or stop, of the application instance' description: change the operational state, i.e. start or stop, of the application instance - operationId: appLcmOperatePOST + operationId: appLcmOperateOnMm3POST parameters: - name: appInstanceId in: path @@ -906,7 +1535,7 @@ paths: - 'app-lcm' summary: 'retrieves information of operation status about multiple application instance lifecycle management operation occurrences' description: retrieves information of operation status about multiple application instance lifecycle management operation occurrences - operationId: appLcmOpOccsGET + operationId: appLcmOpOccsOnMm3GET parameters: - name: filter in: query @@ -1005,7 +1634,7 @@ paths: - 'app-lcm' summary: 'reads the status information of an individual application LCM operation occurrence' description: reads the status information of an individual application LCM operation occurrence - operationId: appLcmOpOccsbyIdGET + operationId: appLcmOpOccsbyIdOnMm3GET parameters: - name: appLcmOpOccId in: path @@ -1072,7 +1701,7 @@ paths: - 'app-lcm' summary: 'cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state.' description: cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state. - operationId: appLcmCancelPOST + operationId: appLcmCancelOnMm3POST parameters: - name: appLcmOpOccId in: path @@ -1150,7 +1779,7 @@ paths: - 'app-lcm' summary: marks an application lifecycle management operation occurrence as "finally failed" description: marks an application lifecycle management operation occurrence as "finally failed" - operationId: appLcmFailPOST + operationId: appLcmFailOnMm3POST parameters: - name: appLcmOpOccId in: path @@ -1218,13 +1847,14 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] + /app_lcm_op_occs/{appLcmOpOccId}/retry: post: tags: - 'app-lcm' summary: initiate retrying an application lifecycle operation that has experience a temporary failure description: initiate retrying an application lifecycle operation that has experience a temporary failure - operationId: appLcmRetryPOST + operationId: appLcmRetryOnMm3POST parameters: - name: appLcmOpOccId in: path @@ -1289,83 +1919,6 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] - /app_instances/{appInstanceId}/configure_platform_for_app: - post: - tags: - - 'app-lcm' - summary: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. - description: provide configuration information in AppD to the MEPM-V, intended to configure the MEP to run the application instance. - operationId: appInstancesConfigPlatformPOST - parameters: - - name: appInstanceId - in: path - description: The identifier of the application instance. - required: true - style: simple - schema: - type: string - requestBody: - description: The payload body in the request contains the information necessary to provide configuration information in AppD - content: - application/json: - schema: - $ref: './MEC010p2_v221_definitions.yaml#/definitions/ConfigPlatformForAppRequest' - responses: - '202': - description: The request was accepted for processing, but it is possible that the processing is not yet completed - headers: {} - content: {} - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] components: @@ -2359,5 +2912,6 @@ components: subscription: $ref: '#/components/schemas/LinkType' description: Links to resources related to this notification. + security: - {} -- GitLab From 5973d7c9dd27de858b20e3ef91ce46532c52dacc Mon Sep 17 00:00:00 2001 From: piscione Date: Tue, 15 Feb 2022 11:44:29 +0100 Subject: [PATCH 3/3] Removed duplicated paths. --- MEC010-2_AppLcm.yaml | 548 ------------------------------------------- 1 file changed, 548 deletions(-) diff --git a/MEC010-2_AppLcm.yaml b/MEC010-2_AppLcm.yaml index 622f442..8c9fbfb 100644 --- a/MEC010-2_AppLcm.yaml +++ b/MEC010-2_AppLcm.yaml @@ -1372,554 +1372,6 @@ paths: $ref: '#/components/schemas/ProblemDetails' deprecated: false parameters: [] - /app_instances/{appInstanceId}/terminate: - post: - tags: - - 'app-lcm' - summary: 'terminate an application instance.' - description: terminate an application instance. - operationId: appLcmTerminateOnMm3POST - parameters: - - name: appInstanceId - in: path - description: Identifier of an individual application instance - required: true - style: simple - schema: - type: string - requestBody: - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/TerminateAppRequest' - required: true - responses: - '202': - description: accepted for processing, but the processing has not yet been completed. - headers: {} - content: {} - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] - - /app_instances/{appInstanceId}/operate: - post: - tags: - - 'app-lcm' - summary: 'change the operational state, i.e. start or stop, of the application instance' - description: change the operational state, i.e. start or stop, of the application instance - operationId: appLcmOperateOnMm3POST - parameters: - - name: appInstanceId - in: path - description: Identifier of an individual application instance - required: true - style: simple - schema: - type: string - requestBody: - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/OperateAppRequest' - required: true - responses: - '202': - description: accepted for processing, but the processing has not yet been completed. - headers: {} - content: {} - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] - /app_lcm_op_occs: - get: - tags: - - 'app-lcm' - summary: 'retrieves information of operation status about multiple application instance lifecycle management operation occurrences' - description: retrieves information of operation status about multiple application instance lifecycle management operation occurrences - operationId: appLcmOpOccsOnMm3GET - parameters: - - name: filter - in: query - description: Attribute-based filtering parameters according to ETSI GS MEC 009 - style: form - explode: true - schema: - type: string - - name: all_fields - in: query - description: Include all complex attributes in the response. - style: form - explode: true - schema: - type: string - - name: fields - in: query - description: Complex attributes of AppLcmOpOcc to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_fields - in: query - description: Complex attributes of AppLcmOpOcc to be excluded from the response. - style: form - explode: true - schema: - type: string - - name: exclude_default - in: query - description: Indicates to exclude the following complex attributes of AppLcmOpOcc from the response. - style: form - explode: true - schema: - type: string - responses: - '200': - description: Status information for zero or more application instance lifecycle management operation occurrences was queried successfully - headers: {} - content: - application/json: - schema: - type: array - items: - $ref: '#/components/schemas/AppLcmOpOcc' - description: '' - contentMediaType: application/json - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] - /app_lcm_op_occs/{appLcmOpOccId}: - get: - tags: - - 'app-lcm' - summary: 'reads the status information of an individual application LCM operation occurrence' - description: reads the status information of an individual application LCM operation occurrence - operationId: appLcmOpOccsbyIdOnMm3GET - parameters: - - name: appLcmOpOccId - in: path - description: Identifies an individual application LCM operation occurrence - required: true - style: simple - schema: - type: string - responses: - '200': - description: Information about an application LCM operation occurrence was read successfully - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/AppLcmOpOcc' - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] - /app_lcm_op_occs/{appLcmOpOccId}/cancel: - post: - tags: - - 'app-lcm' - summary: 'cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state.' - description: cancel an ongoing application lifecycle operation whose related "Individual application LCM operation occurrence" resource is in "PROCESSING" state. - operationId: appLcmCancelOnMm3POST - parameters: - - name: appLcmOpOccId - in: path - description: Identifies an individual application LCM operation occurrence - required: true - style: simple - schema: - type: string - requestBody: - description: '' - content: - application/json: - schema: - $ref: '#/components/schemas/CancelMode' - required: true - responses: - '202': - description: The request was accepted for processing, but it is possible that the processing is not yet completed. - headers: {} - content: {} - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] - /app_lcm_op_occs/{appLcmOpOccId}/fail: - post: - tags: - - 'app-lcm' - summary: marks an application lifecycle management operation occurrence as "finally failed" - description: marks an application lifecycle management operation occurrence as "finally failed" - operationId: appLcmFailOnMm3POST - parameters: - - name: appLcmOpOccId - in: path - description: Identifies an individual application LCM operation occurrence - required: true - style: simple - schema: - type: string - responses: - '202': - description: Shall be returned when the state of the application lifecycle management operation occurrence has been changed successfully - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/AppLcmOpOcc' - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] - - /app_lcm_op_occs/{appLcmOpOccId}/retry: - post: - tags: - - 'app-lcm' - summary: initiate retrying an application lifecycle operation that has experience a temporary failure - description: initiate retrying an application lifecycle operation that has experience a temporary failure - operationId: appLcmRetryOnMm3POST - parameters: - - name: appLcmOpOccId - in: path - description: Identifies an individual application LCM operation occurrence - required: true - style: simple - schema: - type: string - responses: - '202': - description: The request was accepted for processing, but it is possible that the processing is not yet completed - headers: {} - content: {} - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' - headers: {} - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - deprecated: false - parameters: [] - components: schemas: -- GitLab