diff --git a/LICENSE b/LICENSE index 4436d6da4c55a84b9f62a8002984f854ba472fa6..f4fc2ea8d28f66583f45f07f8cbef6bd93b2f2fa 100644 --- a/LICENSE +++ b/LICENSE @@ -20,4 +20,5 @@ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/README.md b/README.md index 9ff4555664c76ef69bbb14aa30e8d6dabc6f0965..6b8e3f20fa695aa6c8bd2e3915aa5123a07d9965 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This repository contains OpenAPIs descriptions for the interfaces specified in E ## Online resources -* [Navigate the API in the browser](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/raw/master/UEAppInterfaceApi.yaml). +* [Navigate the API in the browser](https://forge.etsi.org/swagger/ui/?url=https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/master/develop/UEAppInterfaceApi.yaml). * [Edit the API online](https://forge.etsi.org/swagger/editor/?url=https://forge.etsi.org/gitlab/mec/gs016-ue-app-api/raw/master/UEAppInterfaceApi.yaml). ## License @@ -12,3 +12,4 @@ This repository contains OpenAPIs descriptions for the interfaces specified in E Unless specified otherwise, the content of this repository and the files contained are released under the BSD-3-Clause license. See the attached LICENSE file or visit https://forge.etsi.org/legal-matters. + diff --git a/UEAppInterfaceApi.json b/UEAppInterfaceApi.json index 87dc5e5395ca7d537bc15fa8cf43c7abb17a0979..2c41f69cee258d5b259773cc90ef5752d2e610a3 100644 --- a/UEAppInterfaceApi.json +++ b/UEAppInterfaceApi.json @@ -2,7 +2,7 @@ "openapi": "3.0.2", "info": { "title": "UE Application Interface API", - "version": "1.1.1", + "version": "2.1.1", "description": "The ETSI MEC ISG MEC016 UE Application Interface API described using OpenAPI", "license": { "name": "BSD-3-Clause", @@ -13,8 +13,8 @@ } }, "externalDocs": { - "description": "ETSI GS MEC016 UE Application Interface API, V1.1.1", - "url": "http://www.etsi.org/deliver/etsi_gs/MEC/001_099/016/01.01.01_60/gs_MEC016v010101p.pdf" + "description": "ETSI GS MEC016 UE Application Interface API, V2.1.1", + "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/016/02.01.01_60/gs_MEC016v020101p.pdf" }, "security": [ { @@ -25,10 +25,10 @@ ], "servers": [ { - "url": "http://127.0.0.1:8081/mx2/v1" + "url": "http://127.0.0.1:8081/mx2/v2" }, { - "url": "https://127.0.0.1:8081/mx2/v1" + "url": "https://127.0.0.1:8081/mx2/v2" } ], "tags": [ @@ -37,6 +37,9 @@ }, { "name": "appContext" + }, + { + "name": "callback" } ], "paths": { @@ -109,6 +112,11 @@ "404": { "$ref": "#/components/responses/Error.404" } + }, + "callbacks": { + "referenceURI": { + "$ref": "#/components/callbacks/NotificationEvent" + } } } }, @@ -143,6 +151,11 @@ "404": { "$ref": "#/components/responses/Error.404" } + }, + "callbacks": { + "referenceURI": { + "$ref": "#/components/callbacks/NotificationEvent" + } } }, "delete": { @@ -172,6 +185,43 @@ } }, "components": { + "callbacks": { + "NotificationEvent": { + "{$request.body#/callbackReference}": { + "post": { + "description": "Used by the UALCMP to inform the Device application of a modification to reference URI of the user application.", + "operationId": "NotificationEvent_POST", + "tags": [ + "callback" + ], + "requestBody": { + "$ref": "#/components/requestBodies/NotificationEvent" + }, + "responses": { + "204": { + "description": "No Content." + } + } + } + } + } + }, + "links": { + "PutAppContext": { + "operationId": "AppContextId_PUT", + "description": "The `contextId` value returned in the response can be used as the `contextId` parameter in `PUT /app_contexts/{contextId}`", + "parameters": { + "contextId": "$response.body#/contextId" + } + }, + "DelAppContext": { + "operationId": "AppContextId_DEL", + "description": "The `contextId` value returned in the response can be used as the `contextId` parameter in `DELETE /app_contexts/{contextId}`", + "parameters": { + "contextId": "$response.body#/contextId" + } + } + }, "parameters": { "Query.AppName": { "name": "appName", @@ -255,6 +305,17 @@ } }, "required": true + }, + "NotificationEvent": { + "description": "Sent by the UALCMP to the Device application.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NotificationEvent" + } + } + }, + "required": true } }, "responses": { @@ -266,10 +327,18 @@ "$ref": "#/components/schemas/AppContext" } } + }, + "links": { + "putAppContext": { + "$ref": "#/components/links/PutAppContext" + }, + "delAppContext": { + "$ref": "#/components/links/DelAppContext" + } } }, "AppList": { - "description": "The response body contains the ApplicationList resource available for the querying UE application", + "description": "The response body contains the ApplicationList resource available for the querying Device application", "content": { "application/json": { "schema": { @@ -398,20 +467,37 @@ "description": "Information on available applications", "type": "object", "properties": { - "appInfo": { - "$ref": "#/components/schemas/AppInfo" + "appList": { + "$ref": "#/components/schemas/AppList" }, "vendorSpecificExt": { "$ref": "#/components/schemas/VendorSpecificExt" } } }, + "AppList": { + "description": "List of user applications available to the device application", + "type": "array", + "minItems": 0, + "items": { + "type": "object", + "required": [ + "appInfo" + ], + "properties": { + "appInfo": { + "$ref": "#/components/schemas/AppInfo" + } + } + } + }, "AppContext": { "description": "Information on application context created by the MEC system", "type": "object", "required": [ "contextId", "associateUeAppId", + "callbackReference", "appInfo" ], "properties": { @@ -425,7 +511,7 @@ "$ref": "#/components/schemas/CallbackReference" }, "appInfo": { - "$ref": "#/components/schemas/RequiredAppInfo" + "$ref": "#/components/schemas/AppInfoAppContext" } } }, @@ -441,14 +527,6 @@ } } }, - "VendorSpecificExtList": { - "description": "Extension for vendor specific information.", - "type": "array", - "minItems": 0, - "items": { - "$ref": "#/components/schemas/VendorSpecificExt" - } - }, "VendorSpecificExt": { "description": "Extension for vendor-specific information", "required": [ @@ -462,31 +540,32 @@ }, "ContextId": { "description": "Uniquely identifies the application context in the MEC system. Assigned by the MEC system and included in the response. The length of the value shall not exceed 32 characters.", - "type": "string" + "type": "string", + "readOnly": true }, "AssociateUeAppId": { - "description": "Uniquely identifies the UE application. Included in the request. The length of the value shall not exceed 32 characters.", - "type": "string" + "description": "Uniquely identifies the Device application. Included in the request. The length of the value shall not exceed 32 characters.", + "type": "string", + "writeOnly": true }, "VendorId": { "description": "Vendor identifier. The length of the value shall not exceed 32 characters. The rest of the structure of this vendor specific extension is not defined", "type": "string" }, "AppInfo": { - "description": "User applications available for the UE application", - "type": "array", - "items": { - "$ref": "#/components/schemas/AppInfoList" - } - }, - "AppInfoList": { "type": "object", "required": [ + "appDId", "appName", "appProvider", + "appSoftVersion", + "appDVersion", "appDescription" ], "properties": { + "appDId": { + "$ref": "#/components/schemas/AppDId" + }, "appName": { "$ref": "#/components/schemas/AppName" }, @@ -496,6 +575,9 @@ "appSoftVersion": { "$ref": "#/components/schemas/AppSoftVersion" }, + "appDVersion": { + "$ref": "#/components/schemas/AppDVersion" + }, "appDescription": { "$ref": "#/components/schemas/AppDescription" }, @@ -504,15 +586,18 @@ } } }, - "RequiredAppInfo": { + "AppInfoAppContext": { "description": "Included in the request", "type": "object", "required": [ "appName", "appProvider", - "referenceURL" + "appDVersion" ], "properties": { + "appDId": { + "$ref": "#/components/schemas/AppDId" + }, "appName": { "$ref": "#/components/schemas/AppName" }, @@ -522,6 +607,9 @@ "appSoftVersion": { "$ref": "#/components/schemas/AppSoftVersion" }, + "appDVersion": { + "$ref": "#/components/schemas/AppDVersion" + }, "appDescription": { "$ref": "#/components/schemas/AppDescription" }, @@ -534,7 +622,7 @@ } }, "AppCharcs": { - "description": "The application characteristics relate to the system resources consumed by the application. UE application can use this information e.g., for estimating the cost of use of the application or for the expected user experience", + "description": "The application characteristics relate to the system resources consumed by the application. Device application can use this information e.g., for estimating the cost of use of the application or for the expected user experience", "type": "object", "properties": { "memory": { @@ -570,7 +658,7 @@ "format": "uint32" }, "Bandwidth": { - "description": "The required connection bandwidth in kbit/s for the use of the mobile edge application instance", + "description": "The required connection bandwidth in kbit/s for the use of the MEC application instance", "type": "integer", "format": "uint32" }, @@ -580,7 +668,12 @@ "enum": [ "SERVICE_CONTINUITY_NOT_REQUIRED", "SERVICE_CONTINUITY_REQUIRED" - ] + ], + "example": "SERVICE_CONTINUITY_NOT_REQUIRED" + }, + "AppDId": { + "description": "Identifier of this MEC application descriptor. It is equivalent to the appDId defined in clause 6.2.1.2 of ETSI GS MEC 010-2. This attribute shall be globally unique. It shall be present if the application is one in the ApplicationList.", + "type": "string" }, "AppName": { "description": "Name of the MEC application. The length of the value shall not exceed 32 characters.", @@ -594,19 +687,25 @@ "description": "Software version of the MEC application. The length of the value shall not exceed 32 characters.", "type": "string" }, + "AppDVersion": { + "description": "Identifies the version of the application descriptor. It is equivalent to the appDVersion defined in clause 6.2.1.2 of ETSI GS MEC 010-2.", + "type": "string" + }, "AppDescription": { "description": "Human readable description of the MEC application. NOTE the language support may be limited. The length of the value shall not exceed 128 characters.", "type": "string" }, "CallbackReference": { - "description": "URI assigned by the UE application to receive application lifecycle related notifications. Included in the request. This subscription stays alive for the lifetime of the application context.", + "description": "URI assigned by the Device application to receive application lifecycle related notifications. Included in the request. This subscription stays alive for the lifetime of the application context.", "type": "string", - "format": "uri" + "format": "uri", + "writeOnly": true }, "ReferenceURL": { "description": "Address of the user application. Used as the reference URL for the application. Assigned by the MEC system and included in the response", "type": "string", - "format": "uri" + "format": "uri", + "readOnly": true }, "AppPackageSource": { "description": "URI of the application package. Included in the request if the application is not one in the ApplicationList. appPackageSource enables on-boarding of the application package into the MEC system. The application package shall comply with the definitions in clause 6.2.1.2 of ETSI GS MEC 010-2", diff --git a/UEAppInterfaceApi.yaml b/UEAppInterfaceApi.yaml index f328ac5ea006a2e6ae6b70efbb76468243074c15..8b8f4679b76a5cd42606036d6e97180210ccada1 100644 --- a/UEAppInterfaceApi.yaml +++ b/UEAppInterfaceApi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.2 info: title: UE Application Interface API - version: 1.1.1 + version: 2.1.1 description: >- The ETSI MEC ISG MEC016 UE Application Interface API described using OpenAPI license: @@ -11,17 +11,18 @@ info: email: cti_support@etsi.org externalDocs: description: >- - ETSI GS MEC016 UE Application Interface API, V1.1.1 - url: http://www.etsi.org/deliver/etsi_gs/MEC/001_099/016/01.01.01_60/gs_MEC016v010101p.pdf + ETSI GS MEC016 UE Application Interface API, V2.1.1 + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/016/02.01.01_60/gs_MEC016v020101p.pdf security: - OauthSecurity: - all servers: - - url: http://127.0.0.1:8081/mx2/v1 - - url: https://127.0.0.1:8081/mx2/v1 + - url: http://127.0.0.1:8081/mx2/v2 + - url: https://127.0.0.1:8081/mx2/v2 tags: - name: appList - name: appContext + - name: callback paths: "/app_list": get: @@ -70,6 +71,9 @@ paths: $ref: '#/components/responses/Error.403' "404": $ref: '#/components/responses/Error.404' + callbacks: + referenceURI: + $ref: '#/components/callbacks/NotificationEvent' "/app_contexts/{contextId}": parameters: - $ref: "#/components/parameters/Path.ContextId" @@ -94,6 +98,9 @@ paths: $ref: '#/components/responses/Error.403' "404": $ref: '#/components/responses/Error.404' + callbacks: + referenceURI: + $ref: '#/components/callbacks/NotificationEvent' delete: description: >- The DELETE method is used to delete the resource that represents the @@ -113,6 +120,32 @@ paths: "404": $ref: '#/components/responses/Error.404' components: + callbacks: + NotificationEvent: + '{$request.body#/callbackReference}': + post: + description: >- + Used by the UALCMP to inform the Device application of + a modification to reference URI of the user application. + operationId: NotificationEvent_POST + tags: + - callback + requestBody: + $ref: '#/components/requestBodies/NotificationEvent' + responses: + '204': + description: No Content. + links: + PutAppContext: + operationId: AppContextId_PUT + description: The `contextId` value returned in the response can be used as the `contextId` parameter in `PUT /app_contexts/{contextId}` + parameters: + contextId: '$response.body#/contextId' + DelAppContext: + operationId: AppContextId_DEL + description: The `contextId` value returned in the response can be used as the `contextId` parameter in `DELETE /app_contexts/{contextId}` + parameters: + contextId: '$response.body#/contextId' parameters: Query.AppName: name: appName @@ -185,6 +218,14 @@ components: schema: $ref: "#/components/schemas/AppContext" required: true + NotificationEvent: + description: >- + Sent by the UALCMP to the Device application. + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationEvent" + required: true responses: AppContext: description: >- @@ -194,10 +235,15 @@ components: application/json: schema: $ref: "#/components/schemas/AppContext" + links: + putAppContext: + $ref: "#/components/links/PutAppContext" + delAppContext: + $ref: "#/components/links/DelAppContext" AppList: description: >- The response body contains the ApplicationList resource available - for the querying UE application + for the querying Device application content: application/json: schema: @@ -297,10 +343,22 @@ components: Information on available applications type: object properties: - appInfo: - $ref: "#/components/schemas/AppInfo" + appList: + $ref: "#/components/schemas/AppList" vendorSpecificExt: $ref: "#/components/schemas/VendorSpecificExt" + AppList: + description: >- + List of user applications available to the device application + type: array + minItems: 0 + items: + type: object + required: + - appInfo + properties: + appInfo: + $ref: "#/components/schemas/AppInfo" AppContext: description: >- Information on application context created by the MEC system @@ -308,6 +366,7 @@ components: required: - contextId - associateUeAppId + - callbackReference - appInfo properties: contextId: @@ -317,7 +376,7 @@ components: callbackReference: $ref: "#/components/schemas/CallbackReference" appInfo: - $ref: "#/components/schemas/RequiredAppInfo" + $ref: "#/components/schemas/AppInfoAppContext" NotificationEvent: description: >- The parameters used in the method "Receiving notification events". @@ -327,12 +386,6 @@ components: properties: referenceURI: $ref: "#/components/schemas/ReferenceURL" - VendorSpecificExtList: - description: Extension for vendor specific information. - type: array - minItems: 0 - items: - $ref: "#/components/schemas/VendorSpecificExt" VendorSpecificExt: description: >- Extension for vendor-specific information @@ -347,11 +400,13 @@ components: Assigned by the MEC system and included in the response. The length of the value shall not exceed 32 characters. type: string + readOnly: true AssociateUeAppId: description: >- - Uniquely identifies the UE application. Included in the request. The + Uniquely identifies the Device application. Included in the request. The length of the value shall not exceed 32 characters. type: string + writeOnly: true VendorId: description: >- Vendor identifier. The length of the value shall not exceed 32 @@ -359,42 +414,47 @@ components: is not defined type: string AppInfo: - description: >- - User applications available for the UE application - type: array - items: - $ref: "#/components/schemas/AppInfoList" - AppInfoList: type: object required: + - appDId - appName - appProvider + - appSoftVersion + - appDVersion - appDescription properties: + appDId: + $ref: "#/components/schemas/AppDId" appName: $ref: "#/components/schemas/AppName" appProvider: $ref: "#/components/schemas/AppProvider" appSoftVersion: $ref: "#/components/schemas/AppSoftVersion" + appDVersion: + $ref: "#/components/schemas/AppDVersion" appDescription: $ref: "#/components/schemas/AppDescription" appCharcs: $ref: "#/components/schemas/AppCharcs" - RequiredAppInfo: + AppInfoAppContext: description: Included in the request type: object required: - appName - appProvider - - referenceURL + - appDVersion properties: + appDId: + $ref: "#/components/schemas/AppDId" appName: $ref: "#/components/schemas/AppName" appProvider: $ref: "#/components/schemas/AppProvider" appSoftVersion: $ref: "#/components/schemas/AppSoftVersion" + appDVersion: + $ref: "#/components/schemas/AppDVersion" appDescription: $ref: "#/components/schemas/AppDescription" referenceURL: @@ -404,7 +464,7 @@ components: AppCharcs: description: >- The application characteristics relate to the system resources consumed - by the application. UE application can use this information e.g., for + by the application. Device application can use this information e.g., for estimating the cost of use of the application or for the expected user experience type: object @@ -439,8 +499,8 @@ components: format: uint32 Bandwidth: description: >- - The required connection bandwidth in kbit/s for the use of the mobile - edge application instance + The required connection bandwidth in kbit/s for the use of the MEC + application instance type: integer format: uint32 ServiceCont: @@ -450,6 +510,15 @@ components: enum: - SERVICE_CONTINUITY_NOT_REQUIRED - SERVICE_CONTINUITY_REQUIRED + example: + SERVICE_CONTINUITY_NOT_REQUIRED + AppDId: + description: >- + Identifier of this MEC application descriptor. It is equivalent to + the appDId defined in clause 6.2.1.2 of ETSI GS MEC 010-2. + This attribute shall be globally unique. It shall be present if the + application is one in the ApplicationList. + type: string AppName: description: >- Name of the MEC application. The length of the value shall not @@ -465,6 +534,12 @@ components: Software version of the MEC application. The length of the value shall not exceed 32 characters. type: string + AppDVersion: + description: >- + Identifies the version of the application descriptor. It is + equivalent to the appDVersion defined in clause 6.2.1.2 of + ETSI GS MEC 010-2. + type: string AppDescription: description: >- Human readable description of the MEC application. NOTE the @@ -473,11 +548,12 @@ components: type: string CallbackReference: description: >- - URI assigned by the UE application to receive application lifecycle + URI assigned by the Device application to receive application lifecycle related notifications. Included in the request. This subscription stays alive for the lifetime of the application context. type: string format: uri + writeOnly: true ReferenceURL: description: >- Address of the user application. Used as the reference URL for the @@ -485,6 +561,7 @@ components: response type: string format: uri + readOnly: true AppPackageSource: description: >- URI of the application package. Included in the request if the