From e8f07f264af7a6bda5ed4f713e4e4085155df170 Mon Sep 17 00:00:00 2001 From: Mubeena Date: Wed, 28 Feb 2024 12:00:21 +0500 Subject: [PATCH 01/58] Update swagger file for App Support API v3.1.1 --- config/api/app-support.yaml | 2173 ++++++++++++++++++++++------------- 1 file changed, 1373 insertions(+), 800 deletions(-) diff --git a/config/api/app-support.yaml b/config/api/app-support.yaml index f19f1c9..7fbb0ce 100644 --- a/config/api/app-support.yaml +++ b/config/api/app-support.yaml @@ -1,16 +1,14 @@ -openapi: 3.0.0 -servers: - - url: 'https://localhost/sandboxname/mec_app_support/v1' +openapi: 3.0.2 info: title: AdvantEDGE MEC Application Support API - version: 2.2.1 - description: - "MEC Application Support Service is AdvantEDGE's implementation of - [ETSI MEC ISG MEC011 Application Enablement API](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf) -

[Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt) -

**Micro-service**
[meep-app-enablement](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-app-enablement/server/app-support) -

**Type & Usage**
Edge Service used by edge applications that want to get information about applications in the network -

**Note**
AdvantEDGE supports a selected subset of Application Support API endpoints (see below)." + version: 3.1.1 + description: "MEC Application Support Service is AdvantEDGE's implementation of\ + \ [ETSI MEC ISG MEC011 Application Enablement API](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf)\ + \

[Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)\ + \

**Micro-service**
[meep-app-enablement](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-app-enablement/server/app-support)\ + \

**Type & Usage**
Edge Service used by edge applications that want to get\ + \ information about applications in the network

**Note**
AdvantEDGE supports\ + \ a selected subset of Application Support API endpoints (see below)." license: name: Apache 2.0 url: 'https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE' @@ -18,73 +16,120 @@ info: name: InterDigital AdvantEDGE Support email: AdvantEDGE@InterDigital.com externalDocs: - description: 'ETSI GS MEC011 Application Enablement API, V2.2.1' + description: 'ETSI GS MEC011 Application Enablement API, V3.1.1' url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf -security: - - {} + https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf tags: - name: mec_app_support - name: unsupported - name: callbacks +servers: + - url: 'http://127.0.0.1:8081/mec_app_support/v2' + variables: {} + - url: 'https://127.0.0.1:8081/mec_app_support/v2' + variables: {} paths: /applications/{appInstanceId}/traffic_rules: get: tags: - unsupported - description: - This method retrieves information about all the traffic rules associated - with a MEC application instance. + summary: get traffic rules + description: >- + This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRules_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing an array of the + TrafficRules is returned. + headers: {} content: application/json: schema: type: array - example: - - trafficRuleId: TrafficRule123 - serName: ExampleService - filterType: FLOW - priority: 1 - trafficFilter: - - srcAddress: - - 192.168.2.0/24 - - 192.168.3.0/24 - dstAddress: - - 192.127.4.100/32 - dstPort: - - '80' - action: FORWARD_DECAPSULATED - dstInterface: - - dstInterface0: null - interfaceType: IP - dstIpAddress: 20.1.1.1 - - dstInterface1: null - interfaceType: IP - dstIpAddress: 20.1.1.2 - state: ACTIVE items: $ref: '#/components/schemas/TrafficRule' - x-content-type: application/json + description: '' + example: + - - trafficRuleId: TrafficRule123 + filterType: FLOW + priority: 1 + trafficFilter: + - srcAddress: + - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' + dstPort: + - '80' + action: FORWARD_DECAPSULATED + dstInterface: + - dstInterface: null + interfaceType: IP + tunnelInfo: tunnel + dstIpAddress: 20.1.1.1 + state: ACTIVE + example: + TrafficRules: + value: + - trafficRuleId: TrafficRule123 + filterType: FLOW + priority: 1 + trafficFilter: + - srcAddress: + - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' + dstPort: + - '80' + action: FORWARD_DECAPSULATED + dstInterface: + - dstInterface: null + interfaceType: IP + tunnelInfo: tunnel + dstIpAddress: 20.1.1.1 + state: ACTIVE + - trafficRuleId: TrafficRule123 + filterType: FLOW + priority: 1 + trafficFilter: + - srcAddress: + - 192.127.4.104/32 + - 192.127.4.105/32 + dstAddress: + - 192.127.4.106/32 + - 192.127.4.107/32 + srcPort: + - '80' + dstPort: + - '80' + action: FORWARD_DECAPSULATED + dstInterface: + - dstInterface: null + interfaceType: IP + tunnelInfo: tunnel + dstIpAddress: 20.1.1.2 + state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -94,17 +139,18 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be + mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -113,23 +159,23 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/traffic_rules/{trafficRuleId}: get: tags: - unsupported - description: - This method retrieves information about all the traffic rules associated - with a MEC application instance. + summary: Get traffic rule + description: >- + This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRule_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: trafficRuleId @@ -137,14 +183,13 @@ paths: description: Represents a traffic rule. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing the TrafficRules is returned. + headers: {} content: application/json: schema: @@ -153,27 +198,30 @@ paths: TrafficRule: value: trafficRuleId: TrafficRule123 - serName: ExampleService filterType: FLOW priority: 1 trafficFilter: - srcAddress: - - 192.168.2.0/24 - - 192.168.3.0/24 - dstAddress: - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' dstPort: - '80' action: FORWARD_DECAPSULATED dstInterface: - - dstInterface0: null + - dstInterface: null interfaceType: IP + tunnelInfo: tunnel dstIpAddress: 20.1.1.1 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -183,17 +231,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -202,22 +250,22 @@ paths: schema: type: object description: Empty schema + deprecated: false put: tags: - unsupported - description: - This method retrieves information about all the traffic rules associated - with a MEC application instance. + summary: Update traffic rule + description: >- + This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRule_PUT parameters: - name: appInstanceId in: path - description: + description: >- Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: trafficRuleId @@ -225,11 +273,11 @@ paths: description: Represents a traffic rule. required: true style: simple - explode: false schema: type: string requestBody: - description: One or more updated attributes that are allowed to be changed + description: >- + One or more updated attributes that are allowed to be changed are included in the TrafficRule data structure in the message content of the request. content: application/json: schema: @@ -237,9 +285,9 @@ paths: required: true responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing data type describing the updated TrafficRule is returned. + headers: {} content: application/json: schema: @@ -253,22 +301,26 @@ paths: priority: 1 trafficFilter: - srcAddress: - - 192.168.2.0/24 - - 192.168.3.0/24 - dstAddress: - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' dstPort: - '80' action: FORWARD_DECAPSULATED dstInterface: - dstInterface0: null interfaceType: IP + tunnelInfo: tunnel dstIpAddress: 20.1.1.1 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -278,17 +330,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -298,9 +350,9 @@ paths: type: object description: Empty schema '412': - description: - Precondition Failed. It is used when a condition has failed - during conditional requests, e.g. when using ETags to avoid write conflicts. + description: >- + Precondition Failed. It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. + headers: {} content: application/problem+json: schema: @@ -309,48 +361,69 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/dns_rules: get: tags: - unsupported - description: - This method retrieves information about all the DNS rules associated - with a MEC application instance. + summary: Get DNS rules + description: >- + This method retrieves information about all the DNS rules associated with a MEC application instance. operationId: ApplicationsDnsRules_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing an array of the DnsRules is returned. + headers: {} content: application/json: schema: type: array - example: - - dnsRuleId: DnsRule1 - domainName: www.example.com - ipAddressType: IP_V4 - ipAddress: 146.241.7.3 - ttl: 300 - state: ACTIVE items: $ref: '#/components/schemas/DnsRule' - x-content-type: application/json + description: '' + example: + - - dnsRuleId: DnsRule1 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.3 + ttl: 300 + state: ACTIVE + - dnsRuleId: DnsRule2 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.4 + ttl: 300 + state: INACTIVE + example: + DnsRules: + value: + - dnsRuleId: DnsRule1 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.3 + ttl: 300 + state: ACTIVE + - dnsRuleId: DnsRule2 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.4 + ttl: 300 + state: INACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -360,17 +433,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -379,23 +452,23 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/dns_rules/{dnsRuleId}: get: tags: - unsupported - description: - This method retrieves information about a DNS rule associated with - a MEC application instance. + summary: Get DNS rule + description: >- + This method retrieves information about a DNS rule associated with a MEC application instance. operationId: ApplicationsDnsRule_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: dnsRuleId @@ -403,14 +476,13 @@ paths: description: Represents a DNS rule. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing the DnsRules is returned. + headers: {} content: application/json: schema: @@ -425,9 +497,9 @@ paths: ttl: 300 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -437,17 +509,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -456,20 +528,20 @@ paths: schema: type: object description: Empty schema + deprecated: false put: tags: - unsupported - description: This method activates, de-activates or updates a traffic rule. + summary: Update DNS rule + description: 'This method activates, de-activates or updates a traffic rule.' operationId: ApplicationsDnsRule_PUT parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: dnsRuleId @@ -477,11 +549,10 @@ paths: description: Represents a DNS rule. required: true style: simple - explode: false schema: type: string requestBody: - description: The updated state is included in the entity body of the request. + description: The updated "state" is included in the message content of the request. content: application/json: schema: @@ -489,14 +560,14 @@ paths: required: true responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing data type describing the updated DnsRule is returned. + headers: {} content: application/json: schema: $ref: '#/components/schemas/DnsRule' - example: + examples: DnsRule: value: dnsRuleId: DnsRule1 @@ -506,9 +577,9 @@ paths: ttl: 300 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -518,17 +589,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -538,9 +609,9 @@ paths: type: object description: Empty schema '412': - description: - Precondition Failed. It is used when a condition has failed - during conditional requests, e.g. when using ETags to avoid write conflicts. + description: >- + Precondition Failed. It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. + headers: {} content: application/problem+json: schema: @@ -549,39 +620,38 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/subscriptions: get: tags: - mec_app_support - description: - The GET method may be used to request information about all subscriptions - for this requestor. Upon success, the response contains entity body with all - the subscriptions for the requestor. + summary: Get subscriptions + description: >- + The GET method may be used to request information about all subscriptions for this requestor. Upon success, the response contains message content with all the subscriptions for the requestor. operationId: ApplicationsSubscriptions_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string responses: '200': - description: - Upon success, a response body containing the list of links - to the requested subscriptions is returned. + description: >- + Upon success, a response message content containing the list of links to the requested subscriptions is returned. + headers: {} content: application/json: schema: $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -591,17 +661,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -610,29 +680,26 @@ paths: schema: type: object description: Empty schema + deprecated: false post: tags: - mec_app_support - description: - The POST method may be used to create a new subscription. One example - use case is to create a new subscription to the MEC service availability notifications. - Upon success, the response contains entity body describing the created subscription. + summary: Create subscription + description: >- + The POST method may be used to create a new subscription. One example use case is to create a new subscription to the MEC service availability notifications. Upon success, the response contains message content describing the created subscription. operationId: ApplicationsSubscriptions_POST parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string requestBody: - description: - Entity body in the request contains a subscription to the MEC - application termination notifications that is to be created. + description: >- + Message content in the request contains a subscription to the MEC application termination notifications that is to be created. content: application/json: schema: @@ -640,24 +707,24 @@ paths: required: true responses: '201': - description: - Entity body in the request contains a subscription to the MEC - service availability notifications that is to be created. + description: >- + Entity body in the request contains a subscription to the MEC service availability notifications that is to be created. headers: location: description: The resource URI of the created resource - style: simple - schema: - type: string - format: uri + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource content: application/json: schema: $ref: '#/components/schemas/AppTerminationNotificationSubscription' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -667,17 +734,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -686,65 +753,62 @@ paths: schema: type: object description: Empty schema + deprecated: false callbacks: AppTerminationNotification: '{$request.body#/callbackUri}': post: + description: >- + Represents the information that the MEP notifies the subscribed application instance about the corresponding application instance termination/stop' + operationId: AppTerminationNotification_POST tags: - callbacks - description: - Represents the information that the MEP notifies the subscribed - application instance about the corresponding application instance - termination/stop' - operationId: AppTerminationNotification_POST + summary: Create callback requestBody: $ref: '#/components/requestBodies/AppTerminationNotification' responses: '200': - description: - Expected responses from callback consumer, if it accepts - the callback + description: >- + Expected responses from callback consumer, if it accepts the callback + parameters: [] /applications/{appInstanceId}/subscriptions/{subscriptionId}: get: tags: - mec_app_support - description: - The GET method requests information about a subscription for this - requestor. Upon success, the response contains entity body with the subscription - for the requestor. + summary: Get subscription + description: >- + The GET method requests information about a subscription for this requestor. Upon success, the response contains message content with the subscription for the requestor. operationId: ApplicationsSubscription_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: subscriptionId in: path - description: Represents a subscription to the notifications from the MEC platform. + description: >- + Represents a subscription to the notifications from the MEC platform. required: true style: simple - explode: false schema: type: string responses: '200': - description: - Upon success, a response body containing the requested subscription - is returned. + description: >- + Upon success, a response message content containing the requested subscription is returned. + headers: {} content: application/json: schema: $ref: '#/components/schemas/AppTerminationNotificationSubscription' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -754,17 +818,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -773,49 +837,49 @@ paths: schema: type: object description: Empty schema + deprecated: false delete: tags: - mec_app_support - description: - This method deletes a mecAppSuptApiSubscription. This method is - typically used in "Unsubscribing from service availability event notifications" - procedure. + summary: delete subscription + description: >- + This method deletes a mecAppSuptApiSubscription. This method is typically used in "Unsubscribing from service availability event notifications" procedure. operationId: ApplicationsSubscription_DELETE parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: subscriptionId in: path - description: Represents a subscription to the notifications from the MEC platform. + description: >- + Represents a subscription to the notifications from the MEC platform. required: true style: simple - explode: false schema: type: string responses: '204': description: No Content + headers: {} content: {} '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of + the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -824,26 +888,28 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/confirm_termination: post: tags: - mec_app_support - description: - This method is used to confirm the application level termination of - an application instance. + summary: Confirm termination + description: >- + This method is used to confirm the application level termination of an application instance. operationId: ApplicationsConfirmTermination_POST parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string requestBody: + description: >- + Message content in the request contains the operational action the application instance is responding to. content: application/json: schema: @@ -851,12 +917,14 @@ paths: required: false responses: '204': - description: No Content + description: >- + No Content. The request is acknowledged. The response message content shall be empty. + headers: {} content: {} '401': - description: - Unauthorized. It is used when the client did not submit the - appropriate credentials. + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} content: application/problem+json: schema: @@ -866,17 +934,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -886,10 +954,9 @@ paths: type: object description: Empty schema '409': - description: - Conflict. The operation cannot be executed currently, due to - a conflict with the state of the resource. Typically, this is because - the application instance resource is in NOT_INSTANTIATED state. + description: >- + Conflict. The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is because the application instance resource is in NOT_INSTANTIATED state. + headers: {} content: application/problem+json: schema: @@ -900,6 +967,7 @@ paths: description: Empty schema '429': description: Too Many Requests. It is used when a rate limiter has triggered. + headers: {} content: application/problem+json: schema: @@ -908,38 +976,42 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/confirm_ready: post: tags: - mec_app_support - description: - 'This method may be used by the MEC application instance to notify - the MEC platform that it is up and running. ' + summary: Confirm ready + description: >- + This method may be used by the MEC application instance to notify the MEC platform that it is up and running. operationId: ApplicationsConfirmReady_POST parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string requestBody: + description: >- + Message content in the request contains the indication that the application instance is up and running. content: application/json: schema: $ref: '#/components/schemas/AppReadyConfirmation' + required: false responses: '204': description: No Content + headers: {} content: {} '401': - description: - Unauthorized. It is used when the client did not submit the - appropriate credentials. + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} content: application/problem+json: schema: @@ -949,17 +1021,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -969,10 +1041,9 @@ paths: type: object description: Empty schema '409': - description: - Conflict. The operation cannot be executed currently, due to - a conflict with the state of the resource. Typically, this is because - the application instance resource is in NOT_INSTANTIATED state. + description: >- + Conflict. The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is because the application instance resource is in NOT_INSTANTIATED state. + headers: {} content: application/problem+json: schema: @@ -983,6 +1054,286 @@ paths: description: Empty schema '429': description: Too Many Requests. It is used when a rate limiter has triggered. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + parameters: [] + /registrations: + post: + tags: + - mec_app_support + summary: Create Registrantion + description: >- + The POST method may be used by the MEC application instance to request its registration to the MEC platform. + operationId: ApplicationsRegistrations_POST + parameters: [] + requestBody: + description: >- + The message content in the request contains the profile of the MEC application instance, calling the MEC platform to register the MEC application instance. + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + required: false + responses: + '201': + description: >- + Indicates successful resource creation for registration of the MEC application instance to the MEC platform. + headers: + location: + description: The resource URI of the created resource + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '401': + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + parameters: [] + /registrations/{appInstanceId}: + get: + tags: + - mec_app_support + summary: Get Registration + description: >- + The GET method may be used by the MEC application instance to retrieve information about the existing MEC application instance registration to the MEC platform. + operationId: ApplicationsRegistration_GET + parameters: + - name: appInstanceId + in: path + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. + required: true + style: simple + schema: + type: string + responses: + '200': + description: >- + Upon success, a response message content containing the requested subscription is returned. + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + put: + tags: + - mec_app_support + summary: Update Registration + description: >- + The PUT method may be used by the MEC application instance to update its registration to the MEC platform. + operationId: ApplicationsRegistration_PUT + parameters: + - name: appInstanceId + in: path + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. + required: true + style: simple + schema: + type: string + requestBody: + description: >- + Message content in the request contains the profile of the application, calling the MEC platform to update the existing MEC application instance registration. + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + required: true + responses: + '204': + description: No Content + headers: {} + content: {} + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '401': + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + delete: + tags: + - mec_app_support + summary: delete registration + description: >- + The DELETE method is used to cancel the existing MEC application instance registration. + operationId: ApplicationsRegistration_DELETE + parameters: + - name: appInstanceId + in: path + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. + required: true + style: simple + schema: + type: string + responses: + '204': + description: No Content + headers: {} + content: {} + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '401': + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -991,28 +1342,30 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /timing/timing_caps: get: tags: - mec_app_support - description: - This method retrieves the information of the platform's timing - capabilities which corresponds to the timing capabilities query + summary: Retrieve timing capabilities + description: >- + This method retrieves the information of the platform's timing capabilities which corresponds to the timing capabilities query operationId: TimingCaps_GET parameters: [] responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + It is used to indicate nonspecific success. The response message content contains a representation of the resource. + headers: {} content: application/json: schema: $ref: '#/components/schemas/TimingCaps' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -1022,17 +1375,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -1041,28 +1394,30 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /timing/current_time: get: tags: - mec_app_support - description: - This method retrieves the information of the platform's current - time which corresponds to the get platform time procedure + summary: Retrieve current time + description: >- + This method retrieves the information of the platform's current time which corresponds to the get platform time procedure operationId: TimingCurrentTime_GET parameters: [] responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + It is used to indicate nonspecific success. The response message content contains a representation of the resource. + headers: {} content: application/json: schema: $ref: '#/components/schemas/CurrentTime' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -1072,17 +1427,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -1091,6 +1446,8 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] components: schemas: AppReadyConfirmation: @@ -1101,27 +1458,106 @@ components: properties: indication: type: string - enum: - - READY description: Indication about the MEC application instance. - description: - This type represents the information that the MEC application instance - indicates to the MEC platform that it is up and running. - AppTerminationConfirmation: - title: AppTerminationConfirmation + example: + - READY + description: >- + This type represents the information that the MEC application instance indicates to the MEC platform that it is up and running. + AppInfo: + title: AppInfo required: - - operationAction + - appName type: object properties: - operationAction: + appName: + title: appName + type: string + description: >- + Name of the application. It shall be consistent with the appName in the AppD, if an AppD is available. + example: + - appName + appProvider: + title: appProvider + type: string + description: >- + Provider of the application. It shall be consistent with the appProvider in the AppD, if an AppD is available. See note 1. + example: + - appProvider1 + appCategory: + $ref: '#/components/schemas/CategoryRef' + appDId: + title: appDId + type: string + description: >- + The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way. Shall be present if the application instance is instantiated by the MEC Management. + example: + - TODO + appInstanceId: + title: appInstanceId + type: string + description: >- + Identifier of the application instance. Shall be present if the application instance is instantiated by the MEC Management. + example: + - ID1 + endpoint: + oneOf: + - $ref: '#/components/schemas/EndPointInfoUris' + - $ref: '#/components/schemas/EndPointInfoFqdn' + - $ref: '#/components/schemas/EndPointInfoAddresses' + - $ref: '#/components/schemas/EndPointInfoAlternative' + description: This type represents information about a transport endpoint + x-etsi-notes: "NOTE 1:\tIf appProfile is present, appProvider shall be consistent with provId provided in EAS profile data type, i.e. the same.\nNOTE 2:\tIf appProfile is present, endpoint shall refer to the same end point as endPt provided in EAS profile data type." + appServiceRequired: + title: appServiceRequired + type: array + items: + $ref: '#/components/schemas/ServiceDependency' + description: >- + Describes services a MEC application requires to run. ServiceDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + appServiceOptional: + title: appServiceOptional + type: array + items: + $ref: '#/components/schemas/ServiceDependency' + description: >- + Describes services a MEC application may use if available. ServiceDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + appFeatureRequired: + title: appFeatureRequired + type: array + items: + $ref: '#/components/schemas/FeatureDependency' + description: >- + Describes features a MEC application requires to run. FeatureDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + appFeatureOptional: + title: appFeatureOptional + type: array + items: + $ref: '#/components/schemas/FeatureDependency' + description: >- + Describes features a MEC application may use if available. FeatureDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + isInsByMec: + type: boolean + description: >- + Indicate whether the application instance is instantiated by the MEC Management. Default to FALSE if absent. + example: + - false + appProfile: + $ref: '#/components/schemas/AppProfile' + description: >- + This type represents the information provided by the MEC application instance as part of the "application registration request" and "application registration update" messages. + x-etsi-notes: "NOTE 1:\tIf appProfile is present, appProvider shall be consistent with provId provided in EAS profile data type, i.e. the same.\nNOTE 2:\tIf appProfile is present, endpoint shall refer to the same end point as endPt provided in EAS profile data type." + AppTerminationConfirmation: + title: AppTerminationConfirmation + required: + - operationAction + type: object + properties: + operationAction: $ref: '#/components/schemas/OperationActionType' - description: - This type represents the information that the MEC application instance - provides to the MEC platform when informing it that the application has completed - its application level related terminate/stop actions, e.g. retention of application - state in the case of stop. - AppTerminationNotification.Links: - title: AppTerminationNotification.Links + description: >- + This type represents the information that the MEC application instance provides to the MEC platform when informing it that the application has completed its application level related terminate/stop actions, e.g. retention of application state in the case of stop. + AppTerminationNotificationLinks: + title: AppTerminationNotificationLinks required: - subscription type: object @@ -1129,106 +1565,95 @@ components: subscription: $ref: '#/components/schemas/LinkType' confirmTermination: - $ref: '#/components/schemas/LinkType' + $ref: '#/components/schemas/LinkTypeConfirmTermination' description: Object containing hyperlinks related to the resource. AppTerminationNotification: title: AppTerminationNotification required: - - _links - - maxGracefulTimeout - notificationType - operationAction + - maxGracefulTimeout + - _links type: object properties: notificationType: type: string description: Shall be set to AppTerminationNotification. - example: '["AppTerminationNotification"]' + example: + - AppTerminationNotification operationAction: $ref: '#/components/schemas/OperationActionType' maxGracefulTimeout: type: integer - description: - Maximum timeout value in seconds for graceful termination or - graceful stop of an application instance. + description: >- + Maximum timeout value in seconds for graceful termination or graceful stop of an application instance. + example: + - 10 _links: - $ref: '#/components/schemas/AppTerminationNotification.Links' - description: - This type represents the information that the MEC platform notifies - the subscribed application instance about the corresponding application instance - termination/stop. + $ref: '#/components/schemas/AppTerminationNotificationLinks' + description: >- + This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop. AppTerminationNotificationSubscription: title: AppTerminationNotificationSubscription required: + - subscriptionType + - callbackReference - _links - appInstanceId - - callbackReference - - subscriptionType type: object properties: subscriptionType: type: string description: Shall be set to AppTerminationNotificationSubscription. - example: '["AppTerminationNotificationSubscription"]' + example: + - AppTerminationNotificationSubscription callbackReference: type: string - description: - URI selected by the MEC application instance to receive notifications - on the subscribed MEC application instance management information. This - shall be included in both the request and the response. + description: >- + URI selected by the MEC application instance to receive notifications on the subscribed MEC application instance management information. This shall be included in both the request and the response. _links: $ref: '#/components/schemas/Self' appInstanceId: type: string description: It is used as the filtering criterion for the subscribed events. - example: '["ID1"]' - description: - This type represents the information that the MEC platform notifies - the subscribed application instance about the corresponding application instance - termination/stop. - example: - appInstanceId: '["ID1"]' - subscriptionType: '["AppTerminationNotificationSubscription"]' - _links: - self: - href: '["/mecAppSuptApi/example"]' - callbackReference: callbackReference + example: + - ID1 + description: >- + This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop. CurrentTime: title: CurrentTime required: - - nanoSeconds - seconds + - nanoSeconds - timeSourceStatus type: object properties: seconds: type: integer - description: - The seconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 1577836800 nanoSeconds: type: integer - description: - The nanoseconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 0 timeSourceStatus: $ref: '#/components/schemas/TimeSourceStatus' - description: - This type represents the information provided by the MEC platform - in response to the Get Platform Time Request message. - example: - seconds: 0 - nanoSeconds: 6 - timeSourceStatus: '["TRACEABLE"]' - DestinationInterface.InterfaceType: - title: DestinationInterface.InterfaceType - type: string - description: Type of the interface - example: '["TUNNEL"]' + description: >- + This type represents the information provided by the MEC platform in response to the Get Platform Time Request message. + DestinationInterfaceInterfaceType: + title: DestinationInterfaceInterfaceType enum: - TUNNEL - MAC - IP + type: string + description: Type of the interface + example: + - TUNNEL DestinationInterface: title: DestinationInterface required: @@ -1236,88 +1661,78 @@ components: type: object properties: interfaceType: - $ref: '#/components/schemas/DestinationInterface.InterfaceType' + $ref: '#/components/schemas/DestinationInterfaceInterfaceType' tunnelInfo: $ref: '#/components/schemas/TunnelInfo' srcMacAddress: type: string description: Source address identifies the MAC address of the interface - example: '["02-00-00-00-00-00"]' + example: + - 02-00-00-00-00-00 dstMacAddress: type: string description: Source address identifies the MAC address of the interface - example: '["02-00-00-00-00-00"]' + example: + - 02-00-00-00-00-00 dstIpAddress: type: string description: IP address of the remote destination - example: '["192.0.2.0"]' - description: - This type represents the destination interface. If the action is - FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH one value shall - be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, - two values shall be provided. If the action is DROP, no value shall be provided. - example: - interfaceType: '["TUNNEL"]' - dstIpAddress: '["192.0.2.0"]' - srcMacAddress: '["02-00-00-00-00-00"]' - tunnelInfo: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' - dstMacAddress: '["02-00-00-00-00-00"]' - DnsRule.IpAddressType: - title: DnsRule.IpAddressType - type: string - description: IP address type - example: '["IP_V6"]' + example: + - 192.0.2.0 + description: >- + This type represents the destination interface. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. If the action is DROP, no value shall be provided. + DnsRuleIpAddressType: + title: DnsRuleIpAddressType enum: - IP_V6 - IP_V4 - DnsRule.State: - title: DnsRule.State type: string - description: DNS rule state. This attribute may be updated using HTTP PUT method - example: '["ACTIVE"]' + description: IP address type + example: + - IP_V6 + DnsRuleState: + title: DnsRuleState enum: - ACTIVE - INACTIVE + type: string + description: DNS rule state. This attribute may be updated using HTTP PUT method + example: + - ACTIVE DnsRule: title: DnsRule required: - dnsRuleId - domainName - - ipAddress - ipAddressType + - ipAddress - state type: object properties: dnsRuleId: type: string description: Identifies the DNS Rule - example: '["dnsRule1"]' + example: + - dnsRule1 domainName: type: string description: FQDN resolved by the DNS rule - example: '["www.example.com"]' + example: + - www.example.com ipAddressType: - $ref: '#/components/schemas/DnsRule.IpAddressType' + $ref: '#/components/schemas/DnsRuleIpAddressType' ipAddress: type: string description: IP address associated with the FQDN resolved by the DNS rule - example: '["192.0.2.0"]' + example: + - 192.0.2.0 ttl: type: integer description: Time to live value state: - $ref: '#/components/schemas/DnsRule.State' + $ref: '#/components/schemas/DnsRuleState' description: This type represents the general information of a DNS rule. - example: - domainName: '["www.example.com"]' - ipAddress: '["192.0.2.0"]' - dnsRuleId: '["dnsRule1"]' - state: '["ACTIVE"]' - ttl: 0 - ipAddressType: '["IP_V6"]' + x-etsi-notes: "NOTE:\tIf no ttl value is provided, the DnsRule shall not expire." LinkType: title: LinkType type: object @@ -1325,14 +1740,24 @@ components: href: type: string description: URI referring to a resource - example: '["/mecAppSuptApi/example"]' - description: - This type represents a type of link and may be referenced from - data structures - example: - href: '["/mecAppSuptApi/example"]' - MecAppSuptApiSubscriptionLinkList.Links: - title: MecAppSuptApiSubscriptionLinkList.Links + example: + - /mecAppSuptApi/example + description: >- + This type represents a type of link and may be referenced from data + structures + LinkTypeConfirmTermination: + title: LinkTypeConfirmTermination + type: object + properties: + href: + type: string + description: URI referring to a resource + example: + - /mecAppSuptApi/example + description: >- + Link to the task resource where to confirm termination in case the application is ready to be terminated before expiry of the timeout. + MecAppSuptApiSubscriptionLinkListLinks: + title: MecAppSuptApiSubscriptionLinkListLinks required: - self type: object @@ -1341,20 +1766,12 @@ components: $ref: '#/components/schemas/LinkType' subscriptions: type: array - description: The MEC application instance's subscriptions items: - $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList.Subscription' - description: Self-referring URI. - example: - subscriptions: - - rel: rel - href: '["/mecAppSuptApi/example"]' - - rel: rel - href: '["/mecAppSuptApi/example"]' - self: - href: '["/mecAppSuptApi/example"]' - MecAppSuptApiSubscriptionLinkList.Subscription: - title: MecAppSuptApiSubscriptionLinkList.Subscription + $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkListSubscription' + description: The MEC application instance's subscriptions + description: Object containing hyperlinks related to the resource. + MecAppSuptApiSubscriptionLinkListSubscription: + title: MecAppSuptApiSubscriptionLinkListSubscription required: - href - subscriptionType @@ -1363,14 +1780,12 @@ components: href: type: string description: URI referring to a resource - example: '["/mecAppSuptApi/example"]' + example: + - /mecAppSuptApi/example subscriptionType: type: string - description: The values shall be set to AppTerminationNotificationSubscription. + description: Type of the subscription. The values are as defined in the "subscriptionType" attribute for each different Mp1 event subscription data type. description: A link to a subscription. - example: - subscriptionType: subscriptionType - href: '["/mecAppSuptApi/example"]' MecAppSuptApiSubscriptionLinkList: title: MecAppSuptApiSubscriptionLinkList required: @@ -1378,56 +1793,40 @@ components: type: object properties: _links: - $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList.Links' - description: - This type represents a list of links related to currently existing - subscriptions for a MEC application instance. This information is returned - when sending a request to receive current subscriptions. - example: - _links: - subscriptions: - - rel: rel - href: '["/mecAppSuptApi/example"]' - - rel: rel - href: '["/mecAppSuptApi/example"]' - self: - href: '["/mecAppSuptApi/example"]' + $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkListLinks' + description: >- + This type represents a list of links related to currently existing subscriptions for a MEC application instance. This information is returned when sending a request to receive current subscriptions. OperationActionType: title: OperationActionType - type: string - description: Operation that is being performed on the MEC application instance. - example: '["TERMINATING"]' enum: - STOPPING - TERMINATING + type: string + description: Operation that is being performed on the MEC application instance. + example: + - TERMINATING ProblemDetails: title: ProblemDetails - required: - - status - - detail type: object properties: type: type: string - description: - A URI reference according to IETF RFC 3986 that identifies - the problem type + description: >- + A URI reference according to IETF RFC 3986 that identifies the problem type title: type: string - description: A short, human-readable summary of the problem type + description: 'A short, human-readable summary of the problem type' status: type: integer description: The HTTP status code for this occurrence of the problem detail: type: string - description: - A human-readable explanation specific to this occurrence of - the problem + description: >- + A human-readable explanation specific to this occurrence of the problem instance: type: string - description: - A URI reference that identifies the specific occurrence of - the problem + description: >- + A URI reference that identifies the specific occurrence of the problem Self: title: Self required: @@ -1437,283 +1836,210 @@ components: self: $ref: '#/components/schemas/LinkType' description: Self-referring URI. - example: - self: - href: '["/mecAppSuptApi/example"]' - TimingCaps.NtpServers.AuthenticationOption: - title: TimingCaps.NtpServers.AuthenticationOption - type: string - description: NTP authentication option - example: '["NONE"]' + TimingCapsNtpServersAuthenticationOption: + title: TimingCapsNtpServersAuthenticationOption enum: - NONE - SYMMETRIC_KEY - AUTO_KEY - TimingCaps.NtpServers.NtpServerAddrType: - title: TimingCaps.NtpServers.NtpServerAddrType type: string - description: Address type of NTP server - example: '["IP_ADDRESS"]' + description: NTP authentication option + example: + - NONE + TimingCapsNtpServersNtpServerAddrType: + title: TimingCapsNtpServersNtpServerAddrType enum: - IP_ADDRESS - DNS_NAME - TimingCaps.NtpServers: - title: TimingCaps.NtpServers + type: string + description: Address type of NTP server + example: + - IP_ADDRESS + TimingCapsNtpServers: + title: TimingCapsNtpServers required: - - authenticationKeyNum - - authenticationOption - - localPriority - - maxPollingInterval - - minPollingInterval - - ntpServerAddr - ntpServerAddrType + - ntpServerAddr + - minPollingInterval + - maxPollingInterval + - localPriority + - authenticationOption type: object properties: ntpServerAddrType: - $ref: '#/components/schemas/TimingCaps.NtpServers.NtpServerAddrType' + $ref: '#/components/schemas/TimingCapsNtpServersNtpServerAddrType' ntpServerAddr: type: string description: NTP server address - example: '["192.0.2.0"]' + example: + - 192.0.2.0 minPollingInterval: type: integer - description: - Minimum poll interval for NTP messages, in seconds as a power - of two. Range 3 to 17 + description: >- + Minimum poll interval for NTP messages, in seconds as a power of two. Range 3 to 17 + example: + - 3 maxPollingInterval: type: integer - description: - Maximum poll interval for NTP messages, in seconds as a power - of two. Range 3 to 17 + description: >- + Maximum poll interval for NTP messages, in seconds as a power of two. Range 3 to 17 + example: + - 17 localPriority: type: integer description: NTP server local priority + example: + - 1 authenticationOption: - $ref: '#/components/schemas/TimingCaps.NtpServers.AuthenticationOption' + $ref: '#/components/schemas/TimingCapsNtpServersAuthenticationOption' authenticationKeyNum: type: integer - description: Authentication key number + description: >- + Authentication key number. This configuration is valid and shall be present if authenticationOption is set to SYMMETRIC_KEY + example: + - 1 description: NTP server detail. - example: - ntpServerAddr: '["192.0.2.0"]' - maxPollingInterval: 5 - authenticationKeyNum: 2 - localPriority: 5 - authenticationOption: '["NONE"]' - ntpServerAddrType: '["IP_ADDRESS"]' - minPollingInterval: 1 TimingCaps_PtpMasters: title: TimingCaps_PtpMasters required: - - delayReqMaxRate - ptpMasterIpAddress - ptpMasterLocalPriority + - delayReqMaxRate type: object properties: ptpMasterIpAddress: type: string description: PTP Server (referred to as "master" in IEEE 1588-2019) IP Address - example: '["192.0.2.0"]' + example: + - 192.0.2.0 ptpMasterLocalPriority: type: integer - description: - PTP Server (referred to as "master" in IEEE 1588-2019 ) local - priority + description: >- + PTP Server (referred to as "master" in IEEE 1588-2019 ) local priority + example: + - 1 delayReqMaxRate: type: integer - description: - Acceptable maximum rate of the Delay_Req messages in packets - per second + description: >- + Acceptable maximum rate of the Delay_Req messages in packets per second + example: + - 10 description: NTP server detail. - example: - ptpMasterLocalPriority: 7 - ptpMasterIpAddress: '["192.0.2.0"]' - delayReqMaxRate: 9 - TimingCaps.TimeStamp: - title: TimingCaps.TimeStamp + TimingCapsTimeStamp: + title: TimingCapsTimeStamp required: - - nanoSeconds - seconds + - nanoSeconds type: object properties: seconds: type: integer - description: - The seconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 1577836800 nanoSeconds: type: integer - description: - The nanoseconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 0 description: time - example: - seconds: 0 - nanoSeconds: 6 TimingCaps: title: TimingCaps type: object properties: timeStamp: - $ref: '#/components/schemas/TimingCaps.TimeStamp' + $ref: '#/components/schemas/TimingCapsTimeStamp' ntpServers: type: array - description: Available NTP servers items: - $ref: '#/components/schemas/TimingCaps.NtpServers' + $ref: '#/components/schemas/TimingCapsNtpServers' + description: Available NTP servers ptpMasters: type: array - description: - Number of available PTP Servers (referred to as "masters" in - IEEE 1588-2019) items: $ref: '#/components/schemas/TimingCaps_PtpMasters' - description: - This type represents the information provided by the MEC platform - in response to the Timing capabilities Query message. - example: - timeStamp: - seconds: 0 - nanoSeconds: 6 - ntpServers: - - ntpServerAddr: '["192.0.2.0"]' - maxPollingInterval: 5 - authenticationKeyNum: 2 - localPriority: 5 - authenticationOption: '["NONE"]' - ntpServerAddrType: '["IP_ADDRESS"]' - minPollingInterval: 1 - - ntpServerAddr: '["192.0.2.0"]' - maxPollingInterval: 5 - authenticationKeyNum: 2 - localPriority: 5 - authenticationOption: '["NONE"]' - ntpServerAddrType: '["IP_ADDRESS"]' - minPollingInterval: 1 - ptpMasters: - - ptpMasterLocalPriority: 7 - ptpMasterIpAddress: '["192.0.2.0"]' - delayReqMaxRate: 9 - - ptpMasterLocalPriority: 7 - ptpMasterIpAddress: '["192.0.2.0"]' - delayReqMaxRate: 9 + description: >- + Number of available PTP Servers (referred to as "masters" in IEEE 1588-2019) + description: >- + This type represents the information provided by the MEC platform in response to the Timing capabilities Query message. TrafficFilter: title: TrafficFilter type: object properties: srcAddress: type: array - description: - An IP address or a range of IP address. 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. items: type: string + description: >- + An IP address or a range of IP address. 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. dstAddress: type: array - description: - An IP address or a range of IP address. 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. items: type: string + description: >- + An IP address or a range of IP address. 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 - description: A port or a range of ports items: type: string + description: A port or a range of ports dstPort: type: array - description: A port or a range of ports items: type: string + description: A port or a range of ports protocol: type: array - description: Specify the protocol of the traffic filter items: type: string - token: + description: Specify the protocol of the traffic filter + tag: type: array - description: Used for token based traffic rule items: type: string + description: Used for tag based traffic rule srcTunnelAddress: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule tgtTunnelAddress: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule srcTunnelPort: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule dstTunnelPort: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule qCI: type: integer - description: - Used to match all packets that have the same Quality Class - Indicator (QCI). + description: >- + Used to match all packets that have the same Quality Class Indicator (QCI). + example: + - 1 dSCP: type: integer - description: - Used to match all IPv4 packets that have the same Differentiated - Services Code Point (DSCP) + description: >- + Used to match all IPv4 packets that have the same Differentiated Services Code Point (DSCP) + example: + - 0 tC: type: integer description: Used to match all IPv6 packets that have the same Traffic Class. + example: + - 1 description: This type represents the traffic filter. - example: - srcTunnelPort: - - srcTunnelPort - - srcTunnelPort - dstAddress: - - dstAddress - - dstAddress - srcAddress: - - srcAddress - - srcAddress - srcPort: - - srcPort - - srcPort - token: - - token - - token - tC: 5 - protocol: - - protocol - - protocol - dstTunnelPort: - - dstTunnelPort - - dstTunnelPort - dSCP: 1 - dstPort: - - dstPort - - dstPort - qCI: 6 - srcTunnelAddress: - - srcTunnelAddress - - srcTunnelAddress - tgtTunnelAddress: - - tgtTunnelAddress - - tgtTunnelAddress - TrafficRule.Action: - title: TrafficRule.Action - type: string - description: - The action of the MEC host data plane when a packet matches the - trafficFilter - example: '["DROP"]' + TrafficRuleAction: + title: TrafficRuleAction enum: - DROP - FORWARD_DECAPSULATED @@ -1721,162 +2047,80 @@ components: - PASSTHROUGH - DUPLICATE_DECAPSULATED - DUPLICATE_ENCAPSULATED - TrafficRule.FilterType: - title: TrafficRule.FilterType type: string - description: - Definition of filter per FLOW or PACKET. If flow the filter match - UE->EPC packet and the reverse packet is handled in the same context - example: '["FLOW"]' + description: >- + The action of the MEC host data plane when a packet matches the trafficFilter + example: + - DROP + TrafficRuleFilterType: + title: TrafficRuleFilterType enum: - FLOW - PACKET - TrafficRule.State: - title: TrafficRule.State type: string - description: - Contains the traffic rule state. This attribute may be updated - using HTTP PUT method - example: '["ACTIVE"]' + description: >- + Definition of filter per FLOW or PACKET. If flow the filter match UE->EPC packet and the reverse packet is handled in the same context + example: + - FLOW + TrafficRuleState: + title: TrafficRuleState enum: - ACTIVE - INACTIVE + type: string + description: >- + Contains the traffic rule state. This attribute may be updated using HTTP PUT method + example: + - ACTIVE TrafficRule: title: TrafficRule required: - - action + - trafficRuleId - filterType - priority - - state - trafficFilter - - trafficRuleId + - action + - state type: object properties: trafficRuleId: type: string description: Identify the traffic rule. - example: '["TrafficRule1"]' + example: + - TrafficRule1 filterType: - $ref: '#/components/schemas/TrafficRule.FilterType' + $ref: '#/components/schemas/TrafficRuleFilterType' priority: type: integer - description: - Priority of this traffic rule within the range 0 to 255. If - traffic rules conflict, 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. + description: >- + Priority of this traffic rule within the range 0 to 255. If traffic rules conflict, 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. + example: + - 1 trafficFilter: type: array items: $ref: '#/components/schemas/TrafficFilter' + description: '' action: - $ref: '#/components/schemas/TrafficRule.Action' + $ref: '#/components/schemas/TrafficRuleAction' dstInterface: - maxItems: 2 type: array items: $ref: '#/components/schemas/DestinationInterface' + maxItems: 2 state: - $ref: '#/components/schemas/TrafficRule.State' + $ref: '#/components/schemas/TrafficRuleState' description: This type represents the general information of a traffic rule. - example: - action: '["DROP"]' - trafficRuleId: '["TrafficRule1"]' - dstInterface: - - interfaceType: '["TUNNEL"]' - dstIpAddress: '["192.0.2.0"]' - srcMacAddress: '["02-00-00-00-00-00"]' - tunnelInfo: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' - dstMacAddress: '["02-00-00-00-00-00"]' - - interfaceType: '["TUNNEL"]' - dstIpAddress: '["192.0.2.0"]' - srcMacAddress: '["02-00-00-00-00-00"]' - tunnelInfo: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' - dstMacAddress: '["02-00-00-00-00-00"]' - state: '["ACTIVE"]' - filterType: '["FLOW"]' - priority: 0 - trafficFilter: - - srcTunnelPort: - - srcTunnelPort - - srcTunnelPort - dstAddress: - - dstAddress - - dstAddress - srcAddress: - - srcAddress - - srcAddress - srcPort: - - srcPort - - srcPort - token: - - token - - token - tC: 5 - protocol: - - protocol - - protocol - dstTunnelPort: - - dstTunnelPort - - dstTunnelPort - dSCP: 1 - dstPort: - - dstPort - - dstPort - qCI: 6 - srcTunnelAddress: - - srcTunnelAddress - - srcTunnelAddress - tgtTunnelAddress: - - tgtTunnelAddress - - tgtTunnelAddress - - srcTunnelPort: - - srcTunnelPort - - srcTunnelPort - dstAddress: - - dstAddress - - dstAddress - srcAddress: - - srcAddress - - srcAddress - srcPort: - - srcPort - - srcPort - token: - - token - - token - tC: 5 - protocol: - - protocol - - protocol - dstTunnelPort: - - dstTunnelPort - - dstTunnelPort - dSCP: 1 - dstPort: - - dstPort - - dstPort - qCI: 6 - srcTunnelAddress: - - srcTunnelAddress - - srcTunnelAddress - tgtTunnelAddress: - - tgtTunnelAddress - - tgtTunnelAddress - TunnelInfo.TunnelType: - title: TunnelInfo.TunnelType - type: string - description: This type represents the tunnel information. - example: '["GTP_U"]' + x-etsi-notes: "NOTE 1:\tValue indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.\nNOTE 2:\tSome applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the client (e.g. UE) side and the second on the core network (e.g. EPC) side." + TunnelInfoTunnelType: + title: TunnelInfoTunnelType enum: - GTP_U - GRE + type: string + description: This type represents the tunnel information. + example: + - GTP_U TunnelInfo: title: TunnelInfo required: @@ -1884,35 +2128,364 @@ components: type: object properties: tunnelType: - $ref: '#/components/schemas/TunnelInfo.TunnelType' + $ref: '#/components/schemas/TunnelInfoTunnelType' tunnelDstAddress: type: string description: Destination address of the tunnel - example: '["?"]' + example: + - '192.127.4.100/32' tunnelSrcAddress: type: string description: Source address of the tunnel - example: '["?"]' + example: + - '192.127.4.101/32' description: This type represents the tunnel information. - example: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' TimeSourceStatus: title: TimeSourceStatus - type: string - description: - Platform Time Source status. 1 = TRACEABLE - time source is locked - to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the - UTC time source - example: '["TRACEABLE"]' enum: - TRACEABLE - NONTRACEABLE + type: string + description: >- + Platform Time Source status. 1 = TRACEABLE - time source is locked to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the UTC time source + example: + - TRACEABLE + CategoryRef: + title: CategoryRef + required: + - href + - id + - name + - version + type: object + properties: + href: + type: string + description: Reference of the catalogue + example: + - /example/catalogue1 + id: + type: string + description: Unique identifier of the category + example: + - id12345 + name: + type: string + description: >- + Name of the category, example values include RNI, Location & Bandwidth Management + example: + - RNI + version: + type: string + description: Category version + example: + - version1 + description: This type represents the category reference + EndPointInfoAddress: + title: EndPointInfoAddress + required: + - host + - port + type: object + properties: + host: + type: string + description: Host portion of the address + example: + - 192.0.2.0 + port: + type: integer + description: Port portion of the address + example: + - 8080 + description: A IP address and port pair + EndPointInfoAddresses: + title: EndPointInfoAddresses + required: + - addresses + type: object + properties: + addresses: + type: array + items: + $ref: '#/components/schemas/EndPointInfoAddress' + description: >- + Entry point information of the service as one or more pairs of IP address and port. See note. + description: This type represents information about a transport endpoint. + EndPointInfoAlternative: + title: EndPointInfoAlternative + required: + - alternative + type: object + properties: + alternative: + type: object + description: >- + Entry point information of the service in a format defined by an implementation, or in an external specification. See note. + description: This type represents information about a transport endpoint. + EndPointInfoUris: + title: EndPointInfoUris + required: + - uris + type: object + properties: + uris: + type: array + items: + type: string + description: >- + Entry point information of the service as string, formatted according to URI syntax + description: This type represents information about a transport endpoint. + EndPointInfoFqdn: + title: EndPointInfoFqdn + required: + - fqdn + type: object + properties: + fqdn: + type: array + items: + type: string + description: Fully Qualified Domain Name of the service. See note. + description: 'This type represents information about a transport endpoint. ' + + Not_specified: + description: 'Not_specified' + + ServiceDependency: + properties: + requestedPermissions: + 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. + items: + $ref: '#/components/schemas/Not_specified' + minItems: 0 + type: array + serCategory: + $ref: '#/components/schemas/CategoryRef' + serName: + description: 'The name of the service, for example, RNIS, LocationService, etc.' + type: string + serTransportDependencies: + description: >- + Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + items: + $ref: '#/components/schemas/TransportDependency' + minItems: 0 + type: array + version: + description: The version of the service. + type: string + required: + - serName + - version + type: object + x-etsi-notes: "NOTE:\tThis attribute indicates groups of transport bindings that a service-consuming MEC application supports for the consumption of the MEC service defined by this ServiceDependency structure. If at least one of the indicated groups is supported by the service it may be consumed by the application." + TransportDependency: + properties: + labels: + description: >- + Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + items: + type: string + minItems: 1 + type: array + serializers: + description: >- + Information about the serializers in this transport binding, as defined in the SerializerType type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. + items: + $ref: '#/components/schemas/SerializerType' + minItems: 1 + type: array + transport: + $ref: '#/components/schemas/TransportDescriptor' + required: + - transport + - serializers + - labels + type: object + TransportDescriptor: + properties: + protocol: + description: >- + The name of the protocol used. Shall be set to "HTTP" for a REST API. + type: string + security: + $ref: '#/components/schemas/SecurityInfo' + type: + $ref: '#/components/schemas/TransportType' + version: + description: The version of the protocol used. + type: string + required: + - type + - protocol + - version + - security + type: object + SerializerType: + title: SerializerType + enum: + - JSON + - XML + - PROTOBUF3 + type: string + description: The enumeration represents types of serializers + example: + - JSON + SecurityInfo: + title: SecurityInfo + type: object + properties: + oAuth2Info: + $ref: '#/components/schemas/SecurityInfoOAuth2Info' + description: This type represents security information related to a transport + SecurityInfoOAuth2Info: + title: SecurityInfoOAuth2Info + required: + - grantTypes + - tokenEndpoint + type: object + properties: + grantTypes: + maxItems: 4 + minItems: 1 + type: array + items: + $ref: '#/components/schemas/SecurityInfoOAuth2InfoGrantType' + description: List of supported OAuth 2.0 grant types. + tokenEndpoint: + type: string + description: The token endpoint + example: + - /mecSerMgmtApi/security/TokenEndPoint + description: Parameters related to use of OAuth 2.0 + SecurityInfoOAuth2InfoGrantType: + title: SecurityInfoOAuth2InfoGrantType + enum: + - OAUTH2_AUTHORIZATION_CODE + - OAUTH2_IMPLICIT_GRANT + - OAUTH2_RESOURCE_OWNER + - OAUTH2_CLIENT_CREDENTIALS + type: string + description: OAuth 2.0 grant type + example: + - OAUTH2_CLIENT_CREDENTIALS + TransportType: + title: TransportType + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + type: string + description: The enumeration TransportType represents types of transports + example: + - REST_HTTP + FeatureDependency: + properties: + featureName: + description: 'The name of the feature, for example, UserApps, UEIdentity, etc.' + type: string + version: + description: The version of the feature. + type: string + required: + - featureName + - version + type: object + AppProfile: + type: object + required: + - easId + - endPt + - acIds + - scheds + - permLvl + - easFeats + - svcContSupp + - appLocs + properties: + easId: + description: The identifier of the EAS + type: string + example: + - appName + endPt: + description: The version of the feature. + oneOf: + - $ref: '#/components/schemas/EndPointInfoUris' + - $ref: '#/components/schemas/EndPointInfoFqdn' + - $ref: '#/components/schemas/EndPointInfoAddresses' + - $ref: '#/components/schemas/EndPointInfoAlternative' + acIds: + type: array + items: + type: string + minItems: 1 + description: Identities of the Application Clients that can be served by the EAS + provId: + type: string + description: Identifier of the ASP that provides the EAS. + example: + - appProvider1 + type: + description: The category or type of EAS. + type: string + scheds: + type: array + items: + type: string + minItems: 1 + description: The availability schedule of the EAS. + svcArea: + type: string + description: >- + The list of geographical and topological areas that the EAS serves. ACs in the UE that are outside the area will not be served. + svcKpi: + type: string + description: Service characteristics provided by the EAS. + permLvl: + type: array + items: + type: string + minItems: 1 + description: level of service permissions supported by the EAS. + easFeats: + type: array + items: + type: string + minItems: 1 + description: Service features supported by the EAS. + svcContSupp: + type: array + items: + type: string + minItems: 1 + description: The ACR scenarios supported by the EAS for service continuity. + appLocs: + type: array + items: + type: string + minItems: 1 + description: >- + List of DNAI(s) and the N6 traffic information associated with the EAS. + avlRep: + type: integer + description: >- + The period indicating to the EES, how often the EES needs to check the EAS's availability after a successful registration. + example: + - 1577836800 + status: + type: string + description: 'EAS status information. ' requestBodies: AppTerminationNotification: content: application/json: schema: $ref: '#/components/schemas/AppTerminationNotification' - required: true + required: true \ No newline at end of file -- GitLab From d28a09edff161fc22b1f341d29ffe992da171583 Mon Sep 17 00:00:00 2001 From: Mubeena Date: Wed, 28 Feb 2024 16:24:08 +0500 Subject: [PATCH 02/58] fix minor issues in path --- config/api/dai-api.yaml | 4 ++-- config/permissions.yaml | 2 +- js-apps/frontend/src/js/util/scenario-utils.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/api/dai-api.yaml b/config/api/dai-api.yaml index c7ca5dd..4fde5cc 100644 --- a/config/api/dai-api.yaml +++ b/config/api/dai-api.yaml @@ -382,9 +382,9 @@ paths: maxGracefulTimeout: 10 _links: subscription: - href: http://mec011Server.example.com/mec_app_support/v1/applications/appId1234/subscriptions/sub123 + href: http://mec011Server.example.com/mec_app_support/v2/applications/appId1234/subscriptions/sub123 confirmTermination: - href: http://mec011Server.example.com/mec_app_support/v1/confirm_termination + href: http://mec011Server.example.com/mec_app_support/v2/confirm_termination required: true responses: "204": diff --git a/config/permissions.yaml b/config/permissions.yaml index 0897cc5..64ef682 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -186,7 +186,7 @@ services: #------------------------------ - name: 'meep-app-enablement' api: 'mec_app_support' - path: '/mec_app_support/v1' + path: '/mec_app_support/v2' sbox: true default: mode: 'allow' diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index adaccc4..769e565 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -618,7 +618,7 @@ export function parseEdgeApps(scenario) { mepName: pl.name, env: proc.environment, url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20Application%20Support%20API', - path: pl.name+'/mec_app_support/v1', + path: pl.name+'/mec_app_support/v2', pseudoName: 'MEC Application Support (011) on ' + pl.name, dropDownName: 'MEC Application Support (011)', enabled: true, // always running -- GitLab From 1d72493f280d6bcf8561dbeb73fa3c0be1d121bd Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 5 Mar 2024 15:55:25 +0100 Subject: [PATCH 03/58] Update API file for MEC 030 --- config/api/vis-api.yaml | 3417 +++++++++++++++++++++++++++------------ 1 file changed, 2375 insertions(+), 1042 deletions(-) diff --git a/config/api/vis-api.yaml b/config/api/vis-api.yaml index d7f12ea..16c5781 100644 --- a/config/api/vis-api.yaml +++ b/config/api/vis-api.yaml @@ -1,1221 +1,1623 @@ openapi: 3.0.0 info: + title: ETSI GS MEC 030 V2X Information Services API + description: ETSI GS MEC 030 V2X Information Services API described using OpenAPI. contact: - url: 'https://forge.etsi.org/rep/mec/gs030-vis-api' - title: ETSI GS MEC 030 - V2X Information API - version: 2.2.1 - description: - 'The ETSI MEC ISG MEC030 V2X Information API described using OpenAPI -

**Note**
MEC Sandbox supports all VIS API endpoints; complete details on the VIS API can be found on [ETSI Forge](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/02.02.01_60/gs_mec030v020201p.pdf).' + name: ETSI Forge + url: https://forge.etsi.org/rep/mec/gs030-vis-api + email: cti_support@etsi.org license: name: BSD-3-Clause - url: 'https://forge.etsi.org/legal-matters' + url: https://forge.etsi.org/legal-matters + version: 3.1.1 externalDocs: - description: ETSI MEC030 V2.2.1 V2X Information API - url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/02.02.01_60/gs_mec030v020201p.pdf + description: "ETSI GS MEC 030 V2X Information Services API, v3.1.1" + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.01.01_60/gs_mec030v030101p.pdf servers: - - url: 'https://localhost/sandboxname/vis/v2' +- url: https://localhost/vis/v2 tags: - - name: v2xi - - name: unsupported - +- name: queries + description: Queries +- name: subscription + description: Subscription +- name: QoS +- name: V2X_msg paths: /queries/uu_unicast_provisioning_info: get: tags: - - 'v2xi' - summary: 'Used to query provisioning information for V2X communication over Uu unicast.' - description: 'Used to query provisioning information for V2X communication over Uu unicast.' + - queries + summary: Used to query provisioning information for V2X communication over Uu + unicast. + description: Used to query provisioning information for V2X communication over + Uu unicast. operationId: prov_info_uu_unicastGET parameters: - - in: query - name: location_info - schema: - type: string - required: true - description: 'Comma separated list of locations to identify a cell of a base station or a particular geographical area' - + - name: location_info + in: query + description: Comma separated list of locations to identify a cell of a base + station or a particular geographical area + required: true + style: form + explode: true + schema: + type: string responses: - '200': + "200": description: 'A response body containing the Uu unicast provisioning information. ' content: application/json: schema: $ref: '#/components/schemas/UuUnicastProvisioningInfo' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' /queries/uu_mbms_provisioning_info: get: tags: - - 'unsupported' - summary: 'retrieve information required for V2X communication over Uu MBMS.' - description: 'retrieve information required for V2X communication over Uu MBMS.' + - queries + summary: retrieve information required for V2X communication over Uu MBMS. + description: retrieve information required for V2X communication over Uu MBMS. operationId: prov_info_uu_mbmsGET parameters: - - in: query - name: location_info - schema: - type: string - required: true - description: 'omma separated list of locations to identify a cell of a base station or a particular geographical area' - + - name: location_info + in: query + description: omma separated list of locations to identify a cell of a base + station or a particular geographical area + required: true + style: form + explode: true + schema: + type: string responses: - '200': + "200": description: 'A response body containing the Uu unicast provisioning information. ' content: application/json: schema: $ref: '#/components/schemas/UuMbmsProvisioningInfo' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' /queries/pc5_provisioning_info: get: tags: - - 'unsupported' - summary: 'Query provisioning information for V2X communication over PC5.' - description: 'Query provisioning information for V2X communication over PC5.' + - queries + summary: Query provisioning information for V2X communication over PC5. + description: Query provisioning information for V2X communication over PC5. operationId: prov_infoGET parameters: - - in: query - name: location_info - schema: - type: string - required: true - description: 'Comma separated list of locations to identify a cell of a base station or a particular geographical area' + - name: location_info + in: query + description: Comma separated list of locations to identify a cell of a base + station or a particular geographical area + required: true + style: form + explode: true + schema: + type: string responses: - '200': - description: 'A response body containing the PC5 provisioning information is returned.' + "200": + description: A response body containing the PC5 provisioning information + is returned. content: application/json: schema: $ref: '#/components/schemas/Pc5ProvisioningInfo' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /provide_v2x_msg_distribution_server_info: + post: + tags: + - V2X_msg + summary: Request the information about available V2X Message Distribution Servers + that can be supported by the service consumer. + description: Request the information about available V2X Message Distribution + Servers that can be supported by the service consumer (e.g. a MEC application). + operationId: v2xMsg_distributionServerPost + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/V2xMsgDistributionServerInfo' + required: true + responses: + "200": + description: The response body shall contain the connection information + of the V2X Message Distribution Servers that the service consumer can + use for direct connection. + content: + application/json: + schema: + $ref: '#/components/schemas/V2xMsgDistributionServerInfo' + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' /provide_predicted_qos: post: tags: - - 'v2xi' - summary: 'Request the predicted QoS correspondent to potential routes of a vehicular UE.' - description: 'Request the predicted QoS correspondent to potential routes of a vehicular UE.' + - QoS + summary: Request the predicted QoS correspondent to potential routes of a vehicular + UE. + description: Request the predicted QoS correspondent to potential routes of + a vehicular UE. operationId: predicted_qosPOST requestBody: - required: true content: application/json: schema: $ref: '#/components/schemas/PredictedQos' + required: true responses: - '200': - description: 'The response body shall contain the predicted QoS corresponding to potential routes of a vehicular UE' + "200": + description: The response body shall contain the predicted QoS corresponding + to potential routes of a vehicular UE content: application/json: schema: $ref: '#/components/schemas/PredictedQos' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' /publish_v2x_message: post: tags: - - 'v2xi' - summary: 'Used to publish a V2X message.' - description: 'Used to publish a V2X message.' + - V2X_msg + summary: Used to publish a V2X message. + description: Used to publish a V2X message. operationId: v2x_messagePOST requestBody: - required: true content: application/json: schema: $ref: '#/components/schemas/V2xMsgPublication' - example: - msgContent: 'Hello World' - msgEncodeFormat: 'base64' - msgType: 1 - stdOrganization: 'ETSI' + required: true responses: - '204': - $ref: '#/components/responses/204' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - + "204": + description: No Content + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' /subscriptions: get: tags: - - 'v2xi' - summary: 'Request information about the subscriptions for this requestor.' - description: 'Request information about the subscriptions for this requestor.' + - subscription + summary: Request information about the subscriptions for this requestor. + description: Request information about the subscriptions for this requestor. operationId: subGET parameters: - - in: query - name: subscription_type - description: 'Query parameter to filter on a specific subscription type. Permitted values: prov_chg_uu_uni: provisioning information change for V2X communication over Uuunicast prov_chg_uu_mbms: provisioning information change for V2X communication over Uu MBMS prov_chg_uu_pc5: provisioning information change for V2X communication over PC5. v2x_msg: V2X interoperability message' - schema: - type: string - required: false + - name: subscription_type + in: query + description: "Query parameter to filter on a specific subscription type. Permitted\ + \ values: prov_chg_uu_uni: provisioning information change for V2X communication\ + \ over Uuunicast. prov_chg_uu_mbms: provisioning information change for\ + \ V2X communication over Uu MBMS. prov_chg_uu_pc5: provisioning information\ + \ change for V2X communication over PC5. v2x_msg: V2X interoperability message.\ + \ pred_qos: information on the predicted QoS" + required: false + style: form + explode: true + schema: + type: string responses: - '200': - description: 'A response body containing the list of links to requestor subscriptions is returned.' + "200": + description: A response body containing the list of links to requestor subscriptions + is returned. content: application/json: schema: $ref: '#/components/schemas/SubscriptionLinkList' - example: - _links: - self: - href: 'http://meAppServer.example.com/vis/v2/subscriptions' - subscription: - - _links: - self: - href: 'http://meAppServer.example.com/vis/v2/subscriptions/123' - callbackReference: 'http://my.callback.com/vis-v2x-msg/some-id' - subscriptionType: V2xMsgSubscription - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' post: tags: - - 'v2xi' + - subscription summary: ' create a new subscription to VIS notifications.' description: ' create a new subscription to VIS notifications.' operationId: subPOST requestBody: - required: true content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/ProvChgUuUniSubscription' - - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' - - $ref: '#/components/schemas/ProvChgPc5Subscription' - - $ref: '#/components/schemas/V2xMsgSubscription' - example: - subscriptionType: V2xMsgSubscription - callbackReference: 'http://my.callback.com/vis-v2x-msg/some-id' - filterCriteria: - stdOrganization: 'ETSI' - msgType: - - 1 - - 2 - expiryDeadline: - seconds: 1977836800 - nanoseconds: 0 + $ref: '#/components/schemas/subscriptions_body' + required: true responses: - '201': - description: 'In the returned NotificationSubscription structure, the created subscription is described using the appropriate data type.' - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/ProvChgUuUniSubscription' - - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' - - $ref: '#/components/schemas/ProvChgPc5Subscription' - - $ref: '#/components/schemas/V2xMsgSubscription' - example: - subscriptionType: V2xMsgSubscription - callbackReference: 'http://my.callback.com/vis-v2x-msg/some-id' - _links: - self: - href: 'http://meAppServer.example.com/vis/v2/subscriptions/123' - filterCriteria: - stdOrganization: 'ETSI' - msgType: - - 1 - - 2 - expiryDeadline: - seconds: 1977836800 - nanoseconds: 0 - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '415': - $ref: '#/components/responses/415' - '422': - $ref: '#/components/responses/422' - '429': - $ref: '#/components/responses/429' - + "201": + description: "In the returned NotificationSubscription structure, the created\ + \ subscription is described using the appropriate data type." + content: + application/json: + schema: + $ref: '#/components/schemas/subscriptions_body' + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "415": + description: "Unsupported Media Type : used to indicate that the server\ + \ or the client does not support the content type of the entity body." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "422": + description: "Unprocessable Entity : used to indicate that the server understands\ + \ the content type of the request entity and that the syntax of the request\ + \ entity is correct but that the server is unable to process the contained\ + \ instructions. This error condition can occur if an JSON request body\ + \ is syntactically correct but semantically incorrect, for example if\ + \ the target area for the request is considered too large. This error\ + \ condition can also occur if the capabilities required by the request\ + \ are not supported." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' callbacks: notification: '{$request.body#/callbackReference}': post: - summary: 'Callback POST used to send a notification' - description: 'A notification from VIS.' + summary: Callback POST used to send a notification + description: A notification from VIS. operationId: notificationPOST requestBody: description: Subscription notification - required: true content: application/json: schema: oneOf: - - $ref: '#/components/schemas/ProvChgUuUniNotification' - - $ref: '#/components/schemas/ProvChgUuMbmsNotification' - - $ref: '#/components/schemas/ProvChgPc5Notification' - - $ref: '#/components/schemas/V2xMsgNotification' + - $ref: '#/components/schemas/ProvChgUuUniNotification' + - $ref: '#/components/schemas/ProvChgUuMbmsNotification' + - $ref: '#/components/schemas/ProvChgPc5Notification' + - $ref: '#/components/schemas/V2xMsgNotification' + required: true responses: - '204': - $ref: '#/components/responses/204' - + "204": + description: No Content /subscriptions/{subscriptionId}: - parameters: - - in: path - name: subscriptionId - description: 'Refers to created subscription, where the VIS API allocates a unique resource name for this subscription' - schema: - type: string - required: true - get: tags: - - 'v2xi' - summary: 'Retrieve information about this subscription.' - description: 'Retrieve information about this subscription.' + - subscription + summary: Retrieve information about this subscription. + description: Retrieve information about this subscription. operationId: individualSubscriptionGET - + parameters: + - name: subscriptionId + in: path + description: "Refers to created subscription, where the VIS API allocates\ + \ a unique resource name for this subscription" + required: true + style: simple + explode: false + schema: + type: string responses: - '200': - description: 'A response body containing the data type describing the specific RNI event subscription is returned' - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/ProvChgUuUniSubscription' - - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' - - $ref: '#/components/schemas/ProvChgPc5Subscription' - - $ref: '#/components/schemas/V2xMsgSubscription' - example: - subscriptionType: V2xMsgSubscription - callbackReference: 'http://my.callback.com/vis-v2x-msg/some-id' - _links: - self: - href: 'http://meAppServer.example.com/vis/v2/subscriptions/123' - filterCriteria: - stdOrganization: 'ETSI' - msgType: - - 1 - - 2 - expiryDeadline: - seconds: 1977836800 - nanoseconds: 0 - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - + "200": + description: A response body containing the data type describing the specific + RNI event subscription is returned + content: + application/json: + schema: + $ref: '#/components/schemas/inline_response_200' + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' put: tags: - - 'v2xi' - summary: 'Used to update the existing subscription.' - description: 'Used to update the existing subscription.' + - subscription + summary: Used to update the existing subscription. + description: Used to update the existing subscription. operationId: individualSubscriptionPUT - requestBody: + parameters: + - name: subscriptionId + in: path + description: "Refers to created subscription, where the VIS API allocates\ + \ a unique resource name for this subscription" required: true + style: simple + explode: false + schema: + type: string + requestBody: content: application/json: schema: - oneOf: - - $ref: '#/components/schemas/ProvChgUuUniSubscription' - - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' - - $ref: '#/components/schemas/ProvChgPc5Subscription' - - $ref: '#/components/schemas/V2xMsgSubscription' - example: - subscriptionType: V2xMsgSubscription - callbackReference: 'http://my.callback.com/vis-v2x-msg/some-id' - _links: - self: - href: 'http://meAppServer.example.com/vis/v2/subscriptions/123' - filterCriteria: - stdOrganization: 'ETSI' - msgType: - - 3 - - 4 - expiryDeadline: - seconds: 1977836800 - nanoseconds: 0 - responses: - '200': - description: 'A response body containing data type describing the updated subscription is returned' - content: - application/json: - schema: - oneOf: - - $ref: '#/components/schemas/ProvChgUuUniSubscription' - - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' - - $ref: '#/components/schemas/ProvChgPc5Subscription' - - $ref: '#/components/schemas/V2xMsgSubscription' - example: - example: - subscriptionType: V2xMsgSubscription - callbackReference: 'http://my.callback.com/vis-v2x-msg/some-id' - _links: - self: - href: 'http://meAppServer.example.com/vis/v2/subscriptions/123' - filterCriteria: - stdOrganization: 'ETSI' - msgType: - - 3 - - 4 - expiryDeadline: - seconds: 1977836800 - nanoseconds: 0 - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - - '403': - $ref: '#/components/responses/403' - - '404': - $ref: '#/components/responses/404' - - '406': - $ref: '#/components/responses/406' - - '412': - $ref: '#/components/responses/412' - - '422': - $ref: '#/components/responses/422' - - '429': - $ref: '#/components/responses/429' - delete: - tags: - - 'v2xi' - summary: 'Used to cancel the existing subscription.' - description: 'Used to cancel the existing subscription.' - operationId: individualSubscriptionDELETE + $ref: '#/components/schemas/subscriptions_subscriptionId_body' + required: true responses: - '204': - $ref: '#/components/responses/204' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '429': - $ref: '#/components/responses/429' - - # /notifitication_end_point_provided_by_client - #post: - -components: - schemas: - CellId: - properties: - cellId: - description: E-UTRAN Cell Identity as a bit string (size (28)). - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: String - required: - - cellId - type: object - x-etsi-ref: 6.6.2 - Earfcn: - properties: - earfcn: - description: E-UTRA Absolute Radio Frequency Channel Number, range (0... 65535) - type: integer - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: Integer - required: - - earfcn - type: object + "200": + description: A response body containing data type describing the updated + subscription is returned + content: + application/json: + schema: + $ref: '#/components/schemas/subscriptions_subscriptionId_body' + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "Precondition failed : used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts\ + \ when using PUT" + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "422": + description: "Unprocessable Entity : used to indicate that the server understands\ + \ the content type of the request entity and that the syntax of the request\ + \ entity is correct but that the server is unable to process the contained\ + \ instructions. This error condition can occur if an JSON request body\ + \ is syntactically correct but semantically incorrect, for example if\ + \ the target area for the request is considered too large. This error\ + \ condition can also occur if the capabilities required by the request\ + \ are not supported." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + delete: + tags: + - subscription + summary: Used to cancel the existing subscription. + description: Used to cancel the existing subscription. + operationId: individualSubscriptionDELETE + parameters: + - name: subscriptionId + in: path + description: "Refers to created subscription, where the VIS API allocates\ + \ a unique resource name for this subscription" + required: true + style: simple + explode: false + schema: + type: string + responses: + "204": + description: No Content + "401": + description: "Unauthorized : used when the client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' +components: + schemas: + CellId: + required: + - cellId + type: object + properties: + cellId: + type: string + description: E-UTRAN Cell Identity as a bit string (size (28)). + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + example: + cellId: cellId + x-etsi-ref: 6.6.2 + Earfcn: + required: + - earfcn + type: object + properties: + earfcn: + type: integer + description: "E-UTRA Absolute Radio Frequency Channel Number, range (0...\ + \ 65535)" + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Integer + example: + earfcn: 1 x-etsi-ref: 6.6.3 Ecgi: + required: + - cellId + - plmn + type: object properties: cellId: - # description': The E-UTRAN Cell Identity. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': CellId $ref: '#/components/schemas/CellId' plmn: - # description': Public Land Mobile Network Identity. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Plmn $ref: '#/components/schemas/Plmn' - required: - - plmn - - cellId - type: object + example: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId x-etsi-ref: 6.5.5 FddInfo: + required: + - dlEarfcn + - dlTransmissionBandwidth + - ulEarfcn + - ulTransmissionBandwidth + type: object properties: dlEarfcn: - # description': '' - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Earfcn $ref: '#/components/schemas/Earfcn' dlTransmissionBandwidth: - # description': '' - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': TransmissionBandwidth $ref: '#/components/schemas/TransmissionBandwidth' ulEarfcn: - # description': '' - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Earfcn $ref: '#/components/schemas/Earfcn' ulTransmissionBandwidth: - # description': '' - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': TransmissionBandwidth $ref: '#/components/schemas/TransmissionBandwidth' - required: - - ulEarfcn - - dlEarfcn - - ulTransmissionBandwidth - - dlTransmissionBandwidth - type: object + example: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null x-etsi-ref: 6.5.6 links: - description: Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests. + required: + - self + type: object properties: self: - # description': Self-referring URI. The URI shall be unique within the VIS API as it acts as an ID for the subscription. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LinkType $ref: '#/components/schemas/LinkType' - required: - - self - type: object + description: Hyperlink related to the resource. This shall be only included + in the HTTP responses and in HTTP PUT requests. x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Structure (inlined) LinkType: + required: + - href + type: object properties: href: + type: string description: URI referring to a resource format: uri - type: string - x-etsi-mec-cardinality: '1' + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uri - required: - - href - type: object + example: + href: http://example.com/aeiou x-etsi-ref: 6.5.13 LocationInfo: + type: object properties: ecgi: - # description': E-UTRAN CelI Global Identifier of the serving cell. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': Ecgi $ref: '#/components/schemas/Ecgi' geoArea: $ref: '#/components/schemas/LocationInfo.geoArea' - type: object + example: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId x-etsi-notes: "NOTE:\tEither ecgi or geoArea shall be present, but not both." x-etsi-ref: 6.5.3 LocationInfo.geoArea: - description: Information of a geographical area. + required: + - latitude + - longitude + type: object properties: latitude: - description: 'Latitude (DATUM = WGS84) -90 to 90 in decimal degree format DDD.ddd' - format: float type: number - x-etsi-mec-cardinality: '1' + description: Latitude (DATUM = WGS84) -90 to 90 in decimal degree format + DDD.ddd + format: float + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Float longitude: - description: 'Longitude (DATUM = WGS84) -180 to 180 in decimal degree format DDD.ddd' - format: float type: number - x-etsi-mec-cardinality: '1' + description: Longitude (DATUM = WGS84) -180 to 180 in decimal degree format + DDD.ddd + format: float + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Float - required: - - latitude - - longitude - type: object + description: Information of a geographical area. + example: + latitude: 0.8008282 + longitude: 6.0274563 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Structure (inlined) Pc5NeighbourCellInfo: + required: + - ecgi + - plmn + - siV2xConfig + type: object properties: ecgi: - # description': E-UTRAN CelI Global Identifier. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Ecgi $ref: '#/components/schemas/Ecgi' plmn: - # description': Public Land Mobile Network Identity. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Plmn $ref: '#/components/schemas/Plmn' siV2xConfig: - # description': V2X sidelink communication configuration, as defined in ETSI TS 136 331 [i.11]. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': SystemInformationBlockType21 (as defined in ETSI TS 136 331 [i.11]) $ref: '#/components/schemas/SystemInformationBlockType21' - required: - - plmn - - ecgi - - siV2xConfig - type: object + example: + plmn: + mnc: mnc + mcc: mcc + siV2xConfig: {} + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId x-etsi-ref: 6.5.12 Pc5ProvisioningInfo: + required: + - proInfoPc5 + type: object properties: proInfoPc5: - type: array minItems: 1 + type: array items: $ref: '#/components/schemas/Pc5ProvisioningInfo.proInfoPc5' timeStamp: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' - required: - - proInfoPc5 - type: object + example: + timeStamp: + seconds: 7 + nanoSeconds: 2 + proInfoPc5: + - locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - plmn: + mnc: mnc + mcc: mcc + siV2xConfig: {} + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - plmn: + mnc: mnc + mcc: mcc + siV2xConfig: {} + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + dstLayer2Id: dstLayer2Id + - locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - plmn: + mnc: mnc + mcc: mcc + siV2xConfig: {} + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - plmn: + mnc: mnc + mcc: mcc + siV2xConfig: {} + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + dstLayer2Id: dstLayer2Id x-etsi-ref: 6.2.4 Pc5ProvisioningInfo.proInfoPc5: - description: The provisioning information per location as defined below. + required: + - dstLayer2Id + - locationInfo type: object properties: dstLayer2Id: - description: "For sidelink communication, the Destination Layer-2 ID is set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS\_136\_321 [i.12].\nPLMN operators coordinate to make sure Destination Layer2 ID(s) for different V2X services are configured in a consistent manner." type: string - x-etsi-mec-cardinality: '1' + description: "For sidelink communication, the Destination Layer-2 ID is\ + \ set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS\_136\_\ + 321 [i.12].\nPLMN operators coordinate to make sure Destination Layer2\ + \ ID(s) for different V2X services are configured in a consistent manner." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over PC5. - items: - $ref: '#/components/schemas/Pc5NeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over PC5. + items: + $ref: '#/components/schemas/Pc5NeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: Pc5NeighbourCellInfo - required: - - locationInfo - - dstLayer2Id + description: The provisioning information per location as defined below. + example: + locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - plmn: + mnc: mnc + mcc: mcc + siV2xConfig: {} + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - plmn: + mnc: mnc + mcc: mcc + siV2xConfig: {} + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + dstLayer2Id: dstLayer2Id x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: Structure (inlined) Plmn: + required: + - mcc + - mnc + type: object properties: mcc: - description: The Mobile Country Code part of PLMN Identity. type: string - x-etsi-mec-cardinality: '1' + description: The Mobile Country Code part of PLMN Identity. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String mnc: - description: The Mobile Network Code part of PLMN Identity. type: string - x-etsi-mec-cardinality: '1' + description: The Mobile Network Code part of PLMN Identity. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - required: - - mcc - - mnc - type: object + example: + mnc: mnc + mcc: mcc x-etsi-ref: 6.5.4 PredictedQos: + required: + - locationGranularity + - predictionTarget + - qos + type: object properties: locationGranularity: - description: Granularity of visited location. Measured in meters. type: string - x-etsi-mec-cardinality: '1' + description: Granularity of visited location. Measured in meters. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String + noticePeriod: + $ref: '#/components/schemas/TimeStamp' + predictionArea: + $ref: '#/components/schemas/PredictionArea' + predictionTarget: + type: string + description: "Indicates target of QoS prediction. Valid values:\n\n1.\t\ + SINGLE_UE_PREDICTION: \nThe predicted QoS is to be intended as journey-specific\ + \ for a requesting vehicular UE.\n\n2.\tE2E_APPLICATION_INSTANCE_PREDICTION:\n\ + The E2E user plane link between two V2X application instances, where one\ + \ instance relates to a single vehicular UE and the other instance to\ + \ an application instance within another network, i.e. either another\ + \ vehicular UE as in the V2N2V case, or an infrastructure element as in\ + \ the V2N2I case.\n\nShall only be included in the request.\n\n" + enum: + - SEE_DESCRIPTION + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Enum_inlined + qos: + $ref: '#/components/schemas/Qos' routes: - description: Information relating to the potential routes of a vehicular UE. - items: - $ref: '#/components/schemas/PredictedQos.routes' - minItems: 1 - required: - - routeInfo type: array - x-etsi-mec-cardinality: 1..N - x-etsi-mec-origin-type: Structure (inlined) + items: + $ref: '#/components/schemas/Routes' timeGranularity: - # description': Time granularity of visiting a location. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' - required: - - locationGranularity - - routes - type: object - x-etsi-notes: "NOTE:\tThe data type of locationGranularity is a string which indicates the granularity of a visited location by means of latitudinal and longitudinal margins." - x-etsi-ref: 6.2.5 + example: + noticePeriod: + seconds: 7 + nanoSeconds: 2 + routes: + - routeInfo: + - location: null + time: null + - location: null + time: null + - routeInfo: + - location: null + time: null + - location: null + time: null + qos: + stream: + - qosKpi: + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + - qosKpi: + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + timeGranularity: null + locationGranularity: locationGranularity + predictionArea: + center: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + radius: radius + predictionTarget: SEE_DESCRIPTION + x-etsi-notes: "NOTE:\tThe data type of locationGranularity is a string which\ + \ indicates the granularity of a visited location by means of latitudinal\ + \ and longitudinal margins." + x-etsi-ref: 6.2.6 PredictedQos.routes: + minItems: 1 + type: object properties: routeInfo: - description: 'Information relating to a specific route. - - The first structure shall relate to the route origin and the last to the route destination. Intermediate waypoint locations may also be provided.' - items: - $ref: '#/components/schemas/PredictedQos.routes.routeInfo' - required: - - location minItems: 2 + required: + - location type: array + description: |- + Information relating to a specific route. + The first structure shall relate to the route origin and the last to the route destination. Intermediate waypoint locations may also be provided. + items: + $ref: '#/components/schemas/PredictedQos.routes.routeInfo' x-etsi-mec-cardinality: 2..N x-etsi-mec-origin-type: Structure (inlined) - type: object - minItems: 1 PredictedQos.routes.routeInfo: type: object properties: location: - # description': Vehicular UE location. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' rsrp: - description: - 'Reference Signal Received Power as defined in ETSI TS 136 214 [i.13]. - - Shall only be included in the response.' - format: uint8 type: integer + description: "Reference Signal Received Power as defined in ETSI TS 136\ + \ 214 [i.13].\nShall only be included in the response." + format: uint8 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint8 rsrq: - description: - 'Reference Signal Received Quality as defined in ETSI TS 136 214 [i.13]. - - Shall only be included in the response.' - format: uint8 type: integer + description: "Reference Signal Received Quality as defined in ETSI TS 136\ + \ 214 [i.13].\nShall only be included in the response." + format: uint8 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint8 time: - # description': Estimated time at the location. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' ProblemDetails: + type: object properties: detail: - description: A human-readable explanation specific to this occurrence of the problem type: string + description: A human-readable explanation specific to this occurrence of + the problem x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String instance: - description: A URI reference that identifies the specific occurrence of the problem - format: uri type: string + description: A URI reference that identifies the specific occurrence of + the problem + format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: URI status: + type: integer description: The HTTP status code for this occurrence of the problem format: uint32 - type: integer x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 title: - description: A short, human-readable summary of the problem type type: string + description: "A short, human-readable summary of the problem type" x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String type: - description: A URI reference according to IETF RFC 3986 that identifies the problem type - format: uri type: string + description: A URI reference according to IETF RFC 3986 that identifies + the problem type + format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: URI - type: object ProvChgPc5Notification: + required: + - locationInfo + - notificationType + type: object properties: dstLayer2Id: - description: For sidelink communication, the Destination Layer-2 ID is set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS 136 321 [i.12]. type: string + description: "For sidelink communication, the Destination Layer-2 ID is\ + \ set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS 136 321\ + \ [i.12]." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over PC5. - items: - $ref: '#/components/schemas/Pc5NeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over PC5. + items: + $ref: '#/components/schemas/Pc5NeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: Pc5NeighbourCellInfo notificationType: - description: Shall be set to "ProvChgPc5Notification". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "ProvChgPc5Notification". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String timeStamp: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' - required: - - notificationType - - locationInfo - type: object x-etsi-ref: 6.4.4 ProvChgPc5Subscription: + required: + - filterCriteria + - subscriptionType + type: object properties: _links: $ref: '#/components/schemas/links' callbackReference: - description: URI exposed by the client on which to receive notifications via HTTP. See note. - format: uri type: string + description: URI exposed by the client on which to receive notifications + via HTTP. See note. + format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uri expiryDeadline: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' filterCriteria: $ref: '#/components/schemas/ProvChgPc5Subscription.filterCriteria' requestTestNotification: - description: "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as described in ETSI GS\_MEC\_009 [i.1], clause 6.12a.\nDefault: FALSE." type: boolean + description: "Shall be set to TRUE by the service consumer to request a\ + \ test notification via HTTP on the callbackReference URI, as described\ + \ in ETSI GS\_MEC\_009 [i.1], clause 6.12a.\nDefault: FALSE." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean subscriptionType: - description: Shall be set to "ProvChgPc5Subscription". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "ProvChgPc5Subscription". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String websockNotifConfig: - # description': Provides details to negotiate and signal the use of a Websocket connection between VIS and the service consumer for notifications. See note. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': WebsockNotifConfig $ref: '#/components/schemas/WebsockNotifConfig' - required: - - subscriptionType - - filterCriteria - type: object - x-etsi-notes: 'NOTE: At least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to VIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009 [i.1], clause 6.12a.' + anyOf: + - oneOf: + - required: + - callbackReference + - required: + - websockNotifConfig + x-etsi-notes: "NOTE: At least one of callbackReference and websockNotifConfig\ + \ shall be provided by the service consumer. If both are provided, it is up\ + \ to VIS to choose an alternative and return only that alternative in the\ + \ response, as described in ETSI GS MEC 009 [i.1], clause 6.12a." x-etsi-ref: 6.3.4 ProvChgPc5Subscription.filterCriteria: - description: List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response. + required: + - dstLayer2Id + - locationInfo + type: object properties: dstLayer2Id: - description: For sidelink communication, the Destination Layer-2 ID is set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS 136 321 [i.12]. type: string - x-etsi-mec-cardinality: '1' + description: "For sidelink communication, the Destination Layer-2 ID is\ + \ set to the ProSe Layer-2 Group ID or Prose UE ID, see ETSI TS 136 321\ + \ [i.12]." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over PC5. - items: - $ref: '#/components/schemas/Pc5NeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over PC5. + items: + $ref: '#/components/schemas/Pc5NeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: Pc5NeighbourCellInfo - required: - - locationInfo - - dstLayer2Id - type: object - x-etsi-mec-cardinality: '1' + description: "List of filtering criteria for the subscription. Any filtering\ + \ criteria from below, which is included in the request, shall also be included\ + \ in the response." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Structure (inlined) ProvChgUuMbmsNotification: + required: + - locationInfo + - notificationType + type: object properties: locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu MBMS. - items: - $ref: '#/components/schemas/UuMbmsNeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over Uu MBMS. + items: + $ref: '#/components/schemas/UuMbmsNeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: UuMbmsNeighbourCellInfo notificationType: - description: Shall be set to "ProvChgUuMbmsNotification". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "ProvChgUuMbmsNotification". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String timeStamp: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' v2xServerUsd: - # description': User Service Description for V2X Application Server is used to configure the UE for receiving local V2X Application Server information when it is provided over MBMS. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': V2xServerUsd $ref: '#/components/schemas/V2xServerUsd' - required: - - notificationType - - locationInfo - type: object x-etsi-ref: 6.4.3 ProvChgUuMbmsSubscription: + required: + - filterCriteria + - subscriptionType + type: object properties: _links: $ref: '#/components/schemas/links' callbackReference: - description: URI exposed by the client on which to receive notifications via HTTP. See note. - format: uri type: string + description: URI exposed by the client on which to receive notifications + via HTTP. See note. + format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uri expiryDeadline: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' filterCriteria: $ref: '#/components/schemas/ProvChgUuMbmsSubscription.filterCriteria' requestTestNotification: - description: "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as described in ETSI GS\_MEC\_009 [i.1], clause 6.12a.\nDefault: FALSE." type: boolean + description: "Shall be set to TRUE by the service consumer to request a\ + \ test notification via HTTP on the callbackReference URI, as described\ + \ in ETSI GS\_MEC\_009 [i.1], clause 6.12a.\nDefault: FALSE." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean subscriptionType: - description: Shall be set to "ProvChgUuMbmsSubscription". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "ProvChgUuMbmsSubscription". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String websockNotifConfig: - # description': Provides details to negotiate and signal the use of a Websocket connection between VIS and the service consumer for notifications. See note. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': WebsockNotifConfig $ref: '#/components/schemas/WebsockNotifConfig' - required: - - subscriptionType - - filterCriteria - type: object - x-etsi-notes: "NOTE:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to VIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009 [i.1], clause 6.12a." + anyOf: + - oneOf: + - required: + - callbackReference + - required: + - websockNotifConfig + x-etsi-notes: "NOTE:\tAt least one of callbackReference and websockNotifConfig\ + \ shall be provided by the service consumer. If both are provided, it is up\ + \ to VIS to choose an alternative and return only that alternative in the\ + \ response, as described in ETSI GS MEC 009 [i.1], clause 6.12a." x-etsi-ref: 6.3.3 ProvChgUuMbmsSubscription.filterCriteria: - description: List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response. + required: + - locationInfo + - v2xServerUsd + type: object properties: locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu MBMS. - items: - $ref: '#/components/schemas/UuMbmsNeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over Uu MBMS. + items: + $ref: '#/components/schemas/UuMbmsNeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: UuMbmsNeighbourCellInfo v2xServerUsd: - # description': User Service Description for V2X Application Server is used to configure the UE for receiving local V2X Application Server information when it is provided over MBMS. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': V2xServerUsd $ref: '#/components/schemas/V2xServerUsd' - required: - - locationInfo - - v2xServerUsd - type: object - x-etsi-mec-cardinality: '1' + description: "List of filtering criteria for the subscription. Any filtering\ + \ criteria from below, which is included in the request, shall also be included\ + \ in the response." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Structure (inlined) ProvChgUuUniNotification: + required: + - locationInfo + - notificationType + type: object properties: locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu unicast. - items: - $ref: '#/components/schemas/UuUniNeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over Uu unicast. + items: + $ref: '#/components/schemas/UuUniNeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: UuUniNeighbourCellInfo notificationType: - description: Shall be set to "ProvChgUuUniNotification". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "ProvChgUuUniNotification". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String timeStamp: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' v2xApplicationServer: - # description': V2X Application Server address (consisting of IP address and UDP port) for unicast. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': V2xApplicationServer $ref: '#/components/schemas/V2xApplicationServer' - required: - - notificationType - - locationInfo - type: object x-etsi-ref: 6.4.2 ProvChgUuUniSubscription: + required: + - filterCriteria + - subscriptionType + type: object properties: _links: $ref: '#/components/schemas/links' callbackReference: - description: URI exposed by the client on which to receive notifications via HTTP. See note. - format: uri type: string + description: URI exposed by the client on which to receive notifications + via HTTP. See note. + format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uri expiryDeadline: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' filterCriteria: $ref: '#/components/schemas/ProvChgUuUniSubscription.filterCriteria' requestTestNotification: - description: "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as described in ETSI GS\_MEC\_009 [i.1], clause 6.12a.\nDefault: FALSE." type: boolean + description: "Shall be set to TRUE by the service consumer to request a\ + \ test notification via HTTP on the callbackReference URI, as described\ + \ in ETSI GS\_MEC\_009 [i.1], clause 6.12a.\nDefault: FALSE." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean subscriptionType: - description: Shall be set to "ProvChgUuUniSubscription". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "ProvChgUuUniSubscription". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String websockNotifConfig: - # description': Provides details to negotiate and signal the use of a Websocket connection between VIS and the service consumer for notifications. See note. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': WebsockNotifConfig $ref: '#/components/schemas/WebsockNotifConfig' - required: - - subscriptionType - - filterCriteria - type: object - x-etsi-notes: "NOTE:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to VIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009 [i.1], clause 6.12a." + anyOf: + - oneOf: + - required: + - callbackReference + - required: + - websockNotifConfig + x-etsi-notes: "NOTE:\tAt least one of callbackReference and websockNotifConfig\ + \ shall be provided by the service consumer. If both are provided, it is up\ + \ to VIS to choose an alternative and return only that alternative in the\ + \ response, as described in ETSI GS MEC 009 [i.1], clause 6.12a." x-etsi-ref: 6.3.2 ProvChgUuUniSubscription.filterCriteria: - description: List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response. + required: + - locationInfo + - v2xApplicationServer + type: object properties: locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu unicast. - items: - $ref: '#/components/schemas/UuUniNeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over Uu unicast. + items: + $ref: '#/components/schemas/UuUniNeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: UuUniNeighbourCellInfo v2xApplicationServer: - # description': V2X Application Server address (consisting of IP address and UDP port) for unicast. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': V2xApplicationServer $ref: '#/components/schemas/V2xApplicationServer' - required: - - locationInfo - - v2xApplicationServer - type: object - x-etsi-mec-cardinality: '1' + description: "List of filtering criteria for the subscription. Any filtering\ + \ criteria from below, which is included in the request, shall also be included\ + \ in the response." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Structure (inlined) SubscriptionLinkList: - properties: - _links: - $ref: '#/components/schemas/SubscriptionLinkList.links' required: - - _links + - _links type: object - x-etsi-ref: 6.3.6 + properties: + _links: + $ref: '#/components/schemas/_links2' + example: + _links: + subscriptions: + - subscriptionType: subscriptionType + href: http://example.com/aeiou + - subscriptionType: subscriptionType + href: http://example.com/aeiou + self: + href: http://example.com/aeiou + x-etsi-ref: 6.3.7 SystemInformationBlockType21: type: object TddInfo: + required: + - earfcn + - subframeAssignment + - transmissionBandwidth + type: object properties: earfcn: - # description': '' - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Earfcn $ref: '#/components/schemas/Earfcn' subframeAssignment: - description: Uplink-downlink subframe configuration information. type: string - x-etsi-mec-cardinality: '1' + description: Uplink-downlink subframe configuration information. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String transmissionBandwidth: - # description': '' - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': TransmissionBandwidth $ref: '#/components/schemas/TransmissionBandwidth' - required: - - earfcn - - transmissionBandwidth - - subframeAssignment - type: object + example: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null x-etsi-ref: 6.5.7 - SubscriptionLinkList.links: - description: List of hyperlinks related to the resource. - properties: - self: - # description': URI of this resource. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LinkType - $ref: '#/components/schemas/LinkType' - subscriptions: - type: array - items: - $ref: '#/components/schemas/SubscriptionLinkList.links.subscriptions' + TestNotification: required: - - self + - _links + - notificationType type: object - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: Structure (inlined) - SubscriptionLinkList.links.subscriptions: - description: The service consumer's subscriptions. - type: object - minItems: 0 - properties: - href: - description: The URI referring to the subscription. - format: uri - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: URI - subscriptionType: - description: Type of the subscription. The values are as defined in the "subscriptionType" attribute for each different V2X information event subscription data type. - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: String - required: - - href - - subscriptionType - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: Structure (inlined) - TestNotification: properties: _links: - description: 'Hyperlink related to the resource. ' - properties: - subscription: - # description': URI identifying the subscription for the test notification. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LinkType - $ref: '#/components/schemas/LinkType' - required: - - subscription - type: object - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: Structure (inlined) + $ref: '#/components/schemas/TestNotification__links' notificationType: - description: Shall be set to "TestNotification". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "TestNotification". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - required: - - notificationType - - _links - type: object x-etsi-ref: 6.4.6 TimeStamp: + required: + - nanoSeconds + - seconds + type: object properties: nanoSeconds: - description: The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC. - format: uint32 type: integer - x-etsi-mec-cardinality: '1' + description: "The nanoseconds part of the time. Time is defined as Unix-time\ + \ since January 1, 1970, 00:00:00 UTC." + format: uint32 + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 seconds: - description: The seconds part of the time. Time is defined as Unixtime since January 1, 1970, 00:00:00 UTC. - format: uint32 type: integer - x-etsi-mec-cardinality: '1' + description: "The seconds part of the time. Time is defined as Unixtime\ + \ since January 1, 1970, 00:00:00 UTC." + format: uint32 + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 - required: - - seconds - - nanoSeconds - type: object + example: + seconds: 7 + nanoSeconds: 2 x-etsi-ref: 6.5.2 TransmissionBandwidth: + required: + - transmissionBandwidth + type: object properties: transmissionBandwidth: $ref: '#/components/schemas/TransmissionBandwidth.transmissionBandwidth' - required: - - transmissionBandwidth - type: object + example: + transmissionBandwidth: 5 x-etsi-ref: 6.6.4 TransmissionBandwidth.transmissionBandwidth: + type: integer description: | 'Numeric value corresponding to the transmission bandwidth expressed in units of resource blocks as follows: @@ -1231,518 +1633,1449 @@ components: 6 = bw100 (100 resource blocks)' enum: - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - type: integer - x-etsi-mec-cardinality: '1' + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Enum UuMbmsNeighbourCellInfo: + required: + - ecgi + - fddInfo + - mbmsServiceAreaIdentity + - pci + - plmn + - tddInfo + type: object properties: ecgi: - # description': E-UTRAN CelI Global Identifier. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Ecgi $ref: '#/components/schemas/Ecgi' fddInfo: - # description': Information for FDD operation. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': FddInfo $ref: '#/components/schemas/FddInfo' mbmsServiceAreaIdentity: + minItems: 1 + type: array description: Supported MBMS Service Area Identities in the cell. items: type: string - minItems: 1 - type: array x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: String pci: - description: Physical Cell Identifier. type: integer - x-etsi-mec-cardinality: '1' + description: Physical Cell Identifier. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Integer plmn: - # description': Public Land Mobile Network Identity. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Plmn $ref: '#/components/schemas/Plmn' tddInfo: - # description': Information for TDD operation. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': TddInfo $ref: '#/components/schemas/TddInfo' - required: - - plmn - - ecgi - - pci - - fddInfo - - tddInfo + example: + fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + mbmsServiceAreaIdentity: - mbmsServiceAreaIdentity - type: object + - mbmsServiceAreaIdentity + pci: 0 + plmn: + mnc: mnc + mcc: mcc + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId x-etsi-ref: 6.5.11 UuMbmsProvisioningInfo: + required: + - proInfoUuMbms + type: object properties: proInfoUuMbms: - type: array minItems: 1 + type: array items: $ref: '#/components/schemas/UuMbmsProvisioningInfo.proInfoUuMbms' timeStamp: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' - required: - - proInfoUuMbms - type: object + example: + timeStamp: + seconds: 7 + nanoSeconds: 2 + proInfoUuMbms: + - v2xServerUsd: + sdpInfo: + ipMulticastAddress: ipMulticastAddress + portNumber: portNumber + tmgi: + mnc: mnc + mcc: mcc + mbmsServiceId: mbmsServiceId + serviceAreaIdentifier: + - serviceAreaIdentifier + - serviceAreaIdentifier + locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + mbmsServiceAreaIdentity: + - mbmsServiceAreaIdentity + - mbmsServiceAreaIdentity + pci: 0 + plmn: + mnc: mnc + mcc: mcc + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + mbmsServiceAreaIdentity: + - mbmsServiceAreaIdentity + - mbmsServiceAreaIdentity + pci: 0 + plmn: + mnc: mnc + mcc: mcc + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - v2xServerUsd: + sdpInfo: + ipMulticastAddress: ipMulticastAddress + portNumber: portNumber + tmgi: + mnc: mnc + mcc: mcc + mbmsServiceId: mbmsServiceId + serviceAreaIdentifier: + - serviceAreaIdentifier + - serviceAreaIdentifier + locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + mbmsServiceAreaIdentity: + - mbmsServiceAreaIdentity + - mbmsServiceAreaIdentity + pci: 0 + plmn: + mnc: mnc + mcc: mcc + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + mbmsServiceAreaIdentity: + - mbmsServiceAreaIdentity + - mbmsServiceAreaIdentity + pci: 0 + plmn: + mnc: mnc + mcc: mcc + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId x-etsi-ref: 6.2.3 UuMbmsProvisioningInfo.proInfoUuMbms: - description: The provisioning information per location as defined below. + required: + - locationInfo + - v2xServerUsd type: object properties: locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu MBMS. - items: - $ref: '#/components/schemas/UuMbmsNeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over Uu MBMS. + items: + $ref: '#/components/schemas/UuMbmsNeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: UuMbmsNeighbourCellInfo v2xServerUsd: - # description': User Service Description for V2X Application Server is used to configure the UE for receiving local V2X Application Server information when it is provided over MBMS. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': V2xServerUsd $ref: '#/components/schemas/V2xServerUsd' - required: - - locationInfo - - v2xServerUsd + description: The provisioning information per location as defined below. + example: + v2xServerUsd: + sdpInfo: + ipMulticastAddress: ipMulticastAddress + portNumber: portNumber + tmgi: + mnc: mnc + mcc: mcc + mbmsServiceId: mbmsServiceId + serviceAreaIdentifier: + - serviceAreaIdentifier + - serviceAreaIdentifier + locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + mbmsServiceAreaIdentity: + - mbmsServiceAreaIdentity + - mbmsServiceAreaIdentity + pci: 0 + plmn: + mnc: mnc + mcc: mcc + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + mbmsServiceAreaIdentity: + - mbmsServiceAreaIdentity + - mbmsServiceAreaIdentity + pci: 0 + plmn: + mnc: mnc + mcc: mcc + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: Structure (inlined) UuUniNeighbourCellInfo: + required: + - ecgi + - fddInfo + - pci + - plmn + - tddInfo + type: object properties: ecgi: - # description': E-UTRAN CelI Global Identifier. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Ecgi $ref: '#/components/schemas/Ecgi' fddInfo: - # description': Information for FDD operation. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': FddInfo $ref: '#/components/schemas/FddInfo' pci: - description: Physical Cell Identifier. type: integer - x-etsi-mec-cardinality: '1' + description: Physical Cell Identifier. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Integer plmn: - # description': Public Land Mobile Network Identity. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': Plmn $ref: '#/components/schemas/Plmn' tddInfo: - # description': Information for TDD operation. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': TddInfo $ref: '#/components/schemas/TddInfo' - required: - - plmn - - ecgi - - pci - - fddInfo - - tddInfo - type: object + example: + fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + pci: 5 + plmn: null + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: null x-etsi-ref: 6.5.9 UuUnicastProvisioningInfo: + required: + - proInfoUuUnicast + type: object properties: proInfoUuUnicast: - type: array minItems: 1 + type: array items: $ref: '#/components/schemas/UuUnicastProvisioningInfo.proInfoUuUnicast' timeStamp: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' - required: - - proInfoUuUnicast - type: object + example: + timeStamp: + seconds: 7 + nanoSeconds: 2 + proInfoUuUnicast: + - locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + pci: 5 + plmn: null + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: null + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + pci: 5 + plmn: null + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: null + v2xApplicationServer: + ipAddress: ipAddress + udpPort: udpPort + - locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + pci: 5 + plmn: null + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: null + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + pci: 5 + plmn: null + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: null + v2xApplicationServer: + ipAddress: ipAddress + udpPort: udpPort x-etsi-ref: 6.2.2 UuUnicastProvisioningInfo.proInfoUuUnicast: - description: The provisioning information per location as defined below. + required: + - locationInfo + - v2xApplicationServer type: object properties: locationInfo: - # description': Location information to identify a cell of a base station or a particular geographical area. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' neighbourCellInfo: - description: The information of the neighbour cells in a visiting PLMN that support V2X communication over Uu unicast. - items: - $ref: '#/components/schemas/UuUniNeighbourCellInfo' minItems: 0 type: array + description: The information of the neighbour cells in a visiting PLMN that + support V2X communication over Uu unicast. + items: + $ref: '#/components/schemas/UuUniNeighbourCellInfo' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: UuUniNeighbourCellInfo v2xApplicationServer: - # description': V2X Application Server address (consisting of IP address and UDP port) for unicast. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': V2xApplicationServer $ref: '#/components/schemas/V2xApplicationServer' - required: - - locationInfo - - v2xApplicationServer + description: The provisioning information per location as defined below. + example: + locationInfo: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + neighbourCellInfo: + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + pci: 5 + plmn: null + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: null + - fddInfo: + dlEarfcn: + earfcn: 1 + ulEarfcn: null + dlTransmissionBandwidth: + transmissionBandwidth: 5 + ulTransmissionBandwidth: null + pci: 5 + plmn: null + tddInfo: + subframeAssignment: subframeAssignment + transmissionBandwidth: null + earfcn: null + ecgi: null + v2xApplicationServer: + ipAddress: ipAddress + udpPort: udpPort x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: Structure (inlined) V2xApplicationServer: + required: + - ipAddress + - udpPort + type: object properties: ipAddress: - description: '' type: string - x-etsi-mec-cardinality: '1' + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String udpPort: - description: '' type: string - x-etsi-mec-cardinality: '1' + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - required: - - ipAddress - - udpPort - type: object + example: + ipAddress: ipAddress + udpPort: udpPort x-etsi-ref: 6.5.8 V2xMsgNotification: + required: + - _links + - msgContent + - msgPropertiesValues + - msgRepresentationFormat + - notificationType + - timeStamp + type: object properties: _links: - $ref: '#/components/schemas/V2xMsgNotification.links' + $ref: '#/components/schemas/_links3' msgContent: - description: Published V2X message content. The format of the string is defined by the standardization organization indicated by the attribute stdOrganization. type: string - x-etsi-mec-cardinality: '1' + description: Published V2X message content. The format of the string is + defined by the standardization organization indicated by the attribute + stdOrganization of the msgPropertiesValues attribute. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - msgEncodeFormat: - description: The encode format of the V2X message, for example base64. + msgPropertiesValues: + $ref: '#/components/schemas/V2xMsgPropertiesValues' + msgRepresentationFormat: type: string - x-etsi-mec-cardinality: '1' + description: "The representation format of the binary V2X message, for example\ + \ base64 or hexadecimal representation." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - msgType: - $ref: '#/components/schemas/msgType' notificationType: - description: Shall be set to "V2xMsgNotification". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "V2xMsgNotification". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - stdOrganization: - description: "Standardization organization which defines the published V2X message type: \nETSI: European Telecommunications Standards Institute.\nSee note 1." - enum: - - ETSI - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: Enum timeStamp: - # description': Date and time of the notification generation. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' - required: - - notificationType - - timeStamp - - stdOrganization - - msgType - - msgEncodeFormat - - msgContent - - _links - type: object - x-etsi-notes: "NOTE 1:\tOther standardization organizations could be added as needed.\nNOTE 2:\tThe V2X message types of ETSI shall be used as specified in ETSI TS 102 894-2 [6], clause A.114." x-etsi-ref: 6.4.5 V2xMsgNotification.links: - description: links to resources related to this notification. + required: + - subscription + type: object properties: subscription: - # description': A link to the related subscription. - # x-etsi-mec-cardinality': '1' - # x-etsi-mec-origin-type': LinkType $ref: '#/components/schemas/LinkType' - required: - - subscription - type: object - x-etsi-mec-cardinality: '1' + description: links to resources related to this notification. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Structure (inlined) V2xMsgPublication: + required: + - msgContent + - msgPropertiesValues + - msgRepresentationFormat + type: object properties: msgContent: - description: Published V2X message content. Its format is defined by the standardization organization indicated by the attribute stdOrganization. type: string - x-etsi-mec-cardinality: '1' + description: Published V2X message content. Its format is defined by the + standardization organization indicated by the attribute stdOrganization + of the msgPropertiesValues attribute. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - msgEncodeFormat: - description: The encode format of the V2X message, for example base64. + msgPropertiesValues: + $ref: '#/components/schemas/V2xMsgPropertiesValues' + msgRepresentationFormat: type: string - x-etsi-mec-cardinality: '1' + description: "The representation format of the binary V2X message, for example\ + \ base64 or hexadecimal representation." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - msgType: - $ref: '#/components/schemas/msgType' - stdOrganization: - description: "Standardization organization which defines the published V2X message type:\nETSI: European Telecommunications Standards Institute. \nSee note 1." - enum: - - ETSI - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: Enum - required: - - stdOrganization - - msgType - - msgEncodeFormat - - msgContent - type: object - x-etsi-notes: "NOTE 1:\tOther standardization organizations could be added as needed.\nNOTE 2:\tThe V2X message types of ETSI shall be used as specified in ETSI TS 102 894-2 [6], clause A.114." - x-etsi-ref: 6.2.6 + x-etsi-ref: 6.2.7 msgType: - description: | - Published V2X message type. Its value is defined by the standardization organization indicated by the attribute stdOrganization. See note 2. - − denm(1): Decentralized Environmental Notification Message (DENM) as specified in ETSI EN 302 637-3, - − cam(2): Cooperative Awareness Message (CAM) as specified in ETSI EN 302 637-2, - − poi(3): Point of Interest message as specified in ETSI TS 101 556-1, - − spatem(4): Signal Phase And Timing (SPAT) message as specified in SAE J2735 and in ETSI TS 103 301, - − mapem(5): MAP message as specified in SAE J2735 and in ETSI TS 103 301, - − ivim(6): In Vehicle Information (IVI) message as defined in ISO TS 19321, - − ev-rsr(7): Electric vehicle recharging spot reservation message, as defined in ETSI TS 101 556-3, - − tistpgtransaction(8): messages for Tyre Information System (TIS) and Tyre Pressure Gauge (TPG) interoperability, as specified in ETSI TS 101 556-2, - − srem(9): Traffic light Signal Request Message as specified in ETSI TS 103 301, - − ssem(10): Traffic Light Signal Request Status Message as specified in ETSI TS 103 301. - − evcsn(11): Electrical Vehicle Charging Spot Notification message as specified in ETSI TS 101 556-1, - − saem(12): Services Announcement Extended Message as specified in ETSI TS 102 890-1, - − rtcmem(13): Radio Technical Commission for Maritime Services (RTCM) Message as specified in ETSI TS 103 301, - enum: - - 1 - - 2 - - 3 - - 4 - - 5 - - 6 - - 7 - - 8 - - 9 - - 10 - - 11 - - 12 - - 13 type: integer - x-etsi-mec-cardinality: '1' + description: "Published V2X message type. Its value is defined by the standardization\ + \ organization indicated by the attribute stdOrganization. See note 2.\n−\ + \ denm(1): Decentralized Environmental Notification Message (DENM) as specified\ + \ in ETSI EN 302 637-3,\n− cam(2): Cooperative Awareness Message (CAM) as\ + \ specified in ETSI EN 302 637-2,\n− poi(3): Point of Interest message as\ + \ specified in ETSI TS 101 556-1,\n− spatem(4): Signal Phase And Timing (SPAT)\ + \ message as specified in SAE J2735 and in ETSI TS 103 301,\n− mapem(5): MAP\ + \ message as specified in SAE J2735 and in ETSI TS 103 301,\n− ivim(6): In\ + \ Vehicle Information (IVI) message as defined in ISO TS 19321,\n− ev-rsr(7):\ + \ Electric vehicle recharging spot reservation message, as defined in ETSI\ + \ TS 101 556-3,\n− tistpgtransaction(8): messages for Tyre Information System\ + \ (TIS) and Tyre Pressure Gauge (TPG) interoperability, as specified in ETSI\ + \ TS 101 556-2,\n− srem(9): Traffic light Signal Request Message as specified\ + \ in ETSI TS 103 301,\n− ssem(10): Traffic Light Signal Request Status Message\ + \ as specified in ETSI TS 103 301.\n− evcsn(11): Electrical Vehicle Charging\ + \ Spot Notification message as specified in ETSI TS 101 556-1,\n− saem(12):\ + \ Services Announcement Extended Message as specified in ETSI TS 102 890-1,\n\ + − rtcmem(13): Radio Technical Commission for Maritime Services (RTCM) Message\ + \ as specified in ETSI TS 103 301,\n" + enum: + - 1 + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + - 10 + - 11 + - 12 + - 13 + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Enum V2xMsgSubscription: + required: + - filterCriteria + - subscriptionType + type: object properties: _links: - $ref: '#/components/schemas/links' + $ref: '#/components/schemas/_links' callbackReference: - description: URI exposed by the client on which to receive notifications via HTTP. See note 1. - format: uri type: string + description: URI exposed by the client on which to receive notifications + via HTTP. See note. + format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uri expiryDeadline: - # description': Time stamp. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' filterCriteria: - $ref: '#/components/schemas/V2xMsgSubscription.filterCriteria' + $ref: '#/components/schemas/V2xMsgFilterCriteria' requestTestNotification: - description: "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as described in ETSI GS\_MEC 009 [i.1], clause 6.12a.\nDefault: FALSE." type: boolean + description: "Shall be set to TRUE by the service consumer to request a\ + \ test notification via HTTP on the callbackReference URI, as described\ + \ in ETSI GS MEC 009 [9], clause 6.12a. \nDefault: FALSE." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean subscriptionType: - description: Shall be set to "V2xMsgSubscription". type: string - x-etsi-mec-cardinality: '1' + description: Shall be set to "V2xMsgSubscription". + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String websockNotifConfig: - # description': Provides details to negotiate and signal the use of a Websocket connection between VIS and the service consumer for notifications. See note 1. - # x-etsi-mec-cardinality': 0..1 - # x-etsi-mec-origin-type': WebsockNotifConfig $ref: '#/components/schemas/WebsockNotifConfig' - required: - - subscriptionType - - filterCriteria - type: object - x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to VIS to choose an alternative and return only that alternative in the response, as described in ETSI GS MEC 009 [i.1], clause 6.12a.\nNOTE 2:\tOther standardization organizations could be added as needed.\nNOTE 3:\tThe V2X message types of ETSI shall be used as specified in ETSI TS 102 894-2 [6], clause A.114." + anyOf: + - oneOf: + - required: + - callbackReference + - required: + - websockNotifConfig + x-etsi-notes: "NOTE:\tAt least one of callbackReference and websockNotifConfig\ + \ shall be provided by the service consumer. If both are provided, it is up\ + \ to VIS to choose an alternative and return only that alternative in the\ + \ response, as described in ETSI GS MEC 009 [9], clause 6.12a." x-etsi-ref: 6.3.5 V2xMsgSubscription.filterCriteria: - description: List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response. + required: + - stdOrganization + type: object properties: msgType: - description: Subscribed V2X message type. Its value is defined by the standardization organization indicated by the attribute stdOrganization. See note 3. - items: - type: integer minItems: 0 type: array + description: Subscribed V2X message type. Its value is defined by the standardization + organization indicated by the attribute stdOrganization. See note 3. + items: + type: string x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: Enum stdOrganization: - description: "Standardization organization which defines the subscribed V2X message type: \nETSI: European Telecommunications Standards Institute. \nSee note 2." - enum: - - ETSI type: string - x-etsi-mec-cardinality: '1' + description: "Standardization organization which defines the subscribed\ + \ V2X message type: \nETSI: European Telecommunications Standards Institute.\ + \ \nSee note 2." + enum: + - ETSI + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Enum - required: - - stdOrganization - type: object - x-etsi-mec-cardinality: '1' + description: "List of filtering criteria for the subscription. Any filtering\ + \ criteria from below, which is included in the request, shall also be included\ + \ in the response." + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Structure (inlined) V2xServerUsd: + required: + - sdpInfo + - serviceAreaIdentifier + - tmgi + type: object properties: sdpInfo: $ref: '#/components/schemas/V2xServerUsd.sdpInfo' serviceAreaIdentifier: - description: A list of service area identifier for the applicable MBMS broadcast area. - items: - type: string minItems: 1 type: array + description: A list of service area identifier for the applicable MBMS broadcast + area. + items: + type: string x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: String tmgi: $ref: '#/components/schemas/V2xServerUsd.tmgi' - required: - - tmgi + example: + sdpInfo: + ipMulticastAddress: ipMulticastAddress + portNumber: portNumber + tmgi: + mnc: mnc + mcc: mcc + mbmsServiceId: mbmsServiceId + serviceAreaIdentifier: + - serviceAreaIdentifier - serviceAreaIdentifier - - sdpInfo - type: object x-etsi-ref: 6.5.10 V2xServerUsd.sdpInfo: - description: SDP with IP multicast address and port number used for V2X communication via MBMS. + required: + - ipMulticastAddress + - portNumber + type: object properties: ipMulticastAddress: - description: '' type: string - x-etsi-mec-cardinality: '1' + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String portNumber: - description: '' type: string - x-etsi-mec-cardinality: '1' + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - required: - - ipMulticastAddress - - portNumber - type: object - x-etsi-mec-cardinality: '1' + description: SDP with IP multicast address and port number used for V2X communication + via MBMS. + example: + ipMulticastAddress: ipMulticastAddress + portNumber: portNumber + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Structure (inlined) V2xServerUsd.tmgi: - description: Temporary Mobile Group Identity (TMGI), which is used within MBMS to uniquely identify Multicast and Broadcast bearer services. + required: + - mbmsServiceId + - mcc + - mnc + type: object properties: mbmsServiceId: - description: MBMS Service ID consisting of three octets. type: string - x-etsi-mec-cardinality: '1' + description: MBMS Service ID consisting of three octets. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String mcc: - description: The Mobile Country Code part of PLMN Identity. type: string - x-etsi-mec-cardinality: '1' + description: The Mobile Country Code part of PLMN Identity. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String mnc: - description: The Mobile Network Code part of PLMN Identity. type: string - x-etsi-mec-cardinality: '1' + description: The Mobile Network Code part of PLMN Identity. + x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - required: - - mbmsServiceId - - mcc - - mnc - type: object - x-etsi-mec-cardinality: '' + description: "Temporary Mobile Group Identity (TMGI), which is used within MBMS\ + \ to uniquely identify Multicast and Broadcast bearer services." + example: + mnc: mnc + mcc: mcc + mbmsServiceId: mbmsServiceId + x-etsi-mec-cardinality: "" x-etsi-mec-origin-type: Structure (inlined) WebsockNotifConfig: + type: object properties: requestWebsocketUri: - description: Set to TRUE by the service consumer to indicate that Websocket delivery is requested. type: boolean + description: Set to TRUE by the service consumer to indicate that Websocket + delivery is requested. x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean websocketUri: - description: Set by VIS to indicate to the service consumer the Websocket URI to be used for delivering notifications. + type: string + description: Set by VIS to indicate to the service consumer the Websocket + URI to be used for delivering notifications. format: uri + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + x-etsi-ref: 6.5.18 + V2xMsgDistributionServerInfo: + required: + - v2xMsgDistributionServer + type: object + properties: + locationInfo: + minItems: 0 + type: array + description: Location information to identify a particular geographical + area of interest to the service consumer for receiving V2X messages. + items: + $ref: '#/components/schemas/LocationInfo' + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: LocationInfo + v2xMsgDistributionServer: + minItems: 1 + type: array + description: Describes the information of the V2X Message Distribution Servers + supported by the service consumer for direct communication. + items: + $ref: '#/components/schemas/V2xMsgDistributionServer' + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: V2xMsgDistributionServer + example: + locationInfo: + - geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + - geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + v2xMsgDistributionServer: + - infoConnection: + port_number: 0 + ipAddress: ipAddress + infoProtocol: + msgProtocol: + - 6 + - 6 + protImplementation: protImplementation + - infoConnection: + port_number: 0 + ipAddress: ipAddress + infoProtocol: + msgProtocol: + - 6 + - 6 + protImplementation: protImplementation + x-etsi-ref: 6.2.5 + PredQosSubscription: + required: + - filterCriteria + - subscriptionType + type: object + properties: + _links: + $ref: '#/components/schemas/_links1' + callbackReference: type: string + description: URI exposed by the client on which to receive notifications + via HTTP. See note. + format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uri + expiryDeadline: + $ref: '#/components/schemas/TimeStamp' + filterCriteria: + $ref: '#/components/schemas/QosPredFilterCriteria' + requestTestNotification: + type: boolean + description: "Shall be set to TRUE by the service consumer to request a\ + \ test notification via HTTP on the callbackReference URI, as described\ + \ in ETSI GS MEC 009 [9], clause 6.12a. \nDefault: FALSE." + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + type: string + description: Shall be set to "PredQosSubscription". + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + websockNotifConfig: + $ref: '#/components/schemas/WebsockNotifConfig' + anyOf: + - oneOf: + - required: + - callbackReference + - required: + - websockNotifConfig + x-etsi-notes: "NOTE:\tAt least one of callbackReference and websockNotifConfig\ + \ shall be provided by the service consumer. If both are provided, it is up\ + \ to VIS to choose an alternative and return only that alternative in the\ + \ response, as described in ETSI GS MEC 009 [9], clause 6.12a." + x-etsi-ref: 6.3.6 + V2xMsgPropertiesValues: + required: + - locationInfo + - msgProtocolVersion + - msgType + - stdOrganization type: object + properties: + locationInfo: + $ref: '#/components/schemas/LocationInfo' + msgProtocolVersion: + type: integer + description: "Protocol version of the V2X message (0..255),\nSee note 3." + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Integer + msgType: + type: string + description: Published V2X message type. Its value is defined by the standardization + organization indicated by the attribute stdOrganization. See note 2. + enum: + - SEE_DESCRIPTION + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Enum + stdOrganization: + type: string + description: "Standardization organization which defines the published V2X\ + \ message type: \nETSI: European Telecommunications Standards Institute.\ + \ \nSee note 1." + enum: + - SEE_DESCRIPTION + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Enum + x-etsi-notes: "NOTE 1:\tOther standardization organizations could be added as\ + \ needed.\nNOTE 2:\tThe V2X message types of ETSI shall be used as specified\ + \ in ETSI TS 102 894-2 [6], clause A.114.\nNOTE 3:\tThe message protocol version\ + \ of ETSI shall be used as specified in ETSI TS 102 894-2 [6], clause A.114." x-etsi-ref: 6.5.14 + V2xMsgFilterCriteria: + required: + - stdOrganization + type: object + properties: + locationInfo: + minItems: 0 + type: array + description: Location information to identify a cell of a base station or + a particular geographical area to which the V2X message can be associated. + items: + $ref: '#/components/schemas/LocationInfo' + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: LocationInfo + msgProtocolVersion: + minItems: 0 + type: array + description: "Protocol version of the V2X message (0..255),\nSee note 3." + items: + type: integer + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Integer + msgType: + minItems: 0 + type: array + description: Published V2X message type. Its value is defined by the standardization + organization indicated by the attribute stdOrganization. See note 2. + items: + type: string + enum: + - SEE_DESCRIPTION + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Enum + stdOrganization: + type: string + description: "Standardization organization which defines the published V2X\ + \ message type: \nETSI: European Telecommunications Standards Institute.\ + \ \nSee note 1." + enum: + - SEE_DESCRIPTION + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Enum + x-etsi-notes: "NOTE 1:\tOther standardization organizations could be added as\ + \ needed.\nNOTE 2:\tThe V2X message types of ETSI shall be used as specified\ + \ in ETSI TS 102 894-2 [6], clause A.114.\nNOTE 3:\tThe message protocol version\ + \ of ETSI shall be used as specified in ETSI TS 102 894-2 [6], clause A.114." + x-etsi-ref: 6.5.15 + V2xMsgDistributionServer: + required: + - infoProtocol + type: object + properties: + infoConnection: + $ref: '#/components/schemas/InfoConnection' + infoProtocol: + $ref: '#/components/schemas/InfoProtocol' + example: + infoConnection: + port_number: 0 + ipAddress: ipAddress + infoProtocol: + msgProtocol: + - 6 + - 6 + protImplementation: protImplementation + x-etsi-notes: "NOTE:\tOther application layer protocols (and versions thereof)\ + \ may be added as needed." + x-etsi-ref: 6.5.16 + InfoConnection: + required: + - ipAddress + - port_number + type: object + properties: + ipAddress: + type: string + description: IP address of the V2X Message Distribution Server. + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + port_number: + type: integer + description: Port number of the V2X Message Distribution Server. + x-etsi-mec-cardinality': "1" + x-etsi-mec-origin-type': Integer (0..65535) + description: Connection information of the V2X Message Distribution Server the + service consumer can use for direct connection. Shall only be included in + the response. + example: + port_number: 0 + ipAddress: ipAddress + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure (inlined) + InfoProtocol: + required: + - msgProtocol + - protImplementation + type: object + properties: + msgProtocol: + minItems: 1 + type: array + description: "Numerical value corresponding to the application layer protocol\ + \ supported by the service consumer. For the msgProtocol, the following\ + \ values are currently defined (see note): 0 = MQTT v3.0.0 1 = MQTT v3.1.1\ + \ 2 = MQTT v5 3 = MQTT-SN 4 = AMQP 1.0" + items: + type: integer + enum: + - 0 + - 1 + - 2 + - 3 + - 4 + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Enum + protImplementation: + type: string + description: "Implementation specifics of application layer protocol, e.g.\_\ + programming language." + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + description: Specifics of the application layer protocol of V2X Message Distribution + Server. + example: + msgProtocol: + - 6 + - 6 + protImplementation: protImplementation + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Structure (inlined) + QosPredFilterCriteria: + type: object + properties: + streamId: + type: string + description: "The predicted QoS at the related time and vehicular UE location\ + \ is provided for a specific data stream. In case of 3GPP network, this\ + \ is mapped to a QoS flow. Stream needs to also contain the stream ID\ + \ which, in case of the 3GPP network, can be mapped on to the 5QI or QCI.\n\ + See note." + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + x-etsi-notes: "NOTE:\tOther identifiers could be added as needed." + x-etsi-ref: 6.5.17 + PredictionArea: + required: + - center + - radius + type: object + properties: + center: + $ref: '#/components/schemas/LocationInfo' + radius: + type: string + description: Radius of geographical area including the two ends of the user + plane link between two V2X application instances. Measured in meters. + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + description: |- + Geographical area including the two ends of the user plane link between two V2X application instances. + It shall only be present when "predictionTarget" = "E2E_APPLICATION_INSTANCE_PREDICTION". + example: + center: + geoArea: + latitude: 0.8008282 + longitude: 6.0274563 + ecgi: + plmn: + mnc: mnc + mcc: mcc + cellId: + cellId: cellId + radius: radius + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure (inlined) + Qos: + required: + - stream + type: object + properties: + stream: + type: array + items: + $ref: '#/components/schemas/Stream' + description: Predicted QoS at the related time and vehicular UE location. Shall + only be included in the response. + example: + stream: + - qosKpi: + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + - qosKpi: + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Structure (inlined) + Stream: + minItems: 1 + required: + - qosKpi + type: object + properties: + qosKpi: + type: array + items: + $ref: '#/components/schemas/QosKpi' + description: "Predicted QoS at the related time and vehicular UE location for\ + \ the specific data stream. In case of 3GPP network, this is mapped to a QoS\ + \ flow. Stream needs to also contain the stream ID that, in case of the 3GPP\ + \ network, can be mapped on to the 5QI or QCI." + example: + qosKpi: + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + - kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Structure (inlined) + QosKpi: + minItems: 1 + required: + - kpiName + - kpiValue + type: object + properties: + confidence: + type: string + description: "Confidence of the prediction, as returned by the relevant\ + \ domain PF. The value and the measurement of the confidence depends on\ + \ the SLA. Shall only be included in the response." + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + kpiName: + type: string + description: "The name of the KPI (e.g. latency, UL bitrate, etc). It can\ + \ be included in the request and in the response." + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + kpiValue: + type: string + description: "Information on the predicted value for the specific QoS KPI.\ + \ It can be in different forms, such as upper bound and lower bound, CDF,\ + \ actual value, etc. Shall only be included in the response." + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + description: This structure contains the prediction for a specific QoS KPI related + to a given data stream. + example: + kpiValue: kpiValue + confidence: confidence + kpiName: kpiName + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Structure (inlined) + Routes: + minItems: 0 + required: + - routeInfo + type: object + properties: + routeInfo: + type: array + items: + $ref: '#/components/schemas/RouteInfo' + description: Information relating to the potential routes of a vehicular UE. + Shall only be present when "predictionTarget" = "SINGLE_UE_PREDICTION". + example: + routeInfo: + - location: null + time: null + - location: null + time: null + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Structure (inlined) + RouteInfo: + minItems: 1 + required: + - location + type: object + properties: + location: + $ref: '#/components/schemas/LocationInfo' + time: + $ref: '#/components/schemas/TimeStamp' + description: |- + Information relating to a specific route. + The first structure shall relate to the route origin and the last to the route destination. Intermediate waypoint locations may also be provided. + example: + location: null + time: null + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Structure (inlined) + _links: + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + description: Hyperlink related to the resource. This shall be only included + in the HTTP responses and in HTTP PUT requests. + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure (inlined) + _links1: + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + description: Hyperlink related to the resource. This shall be only included + in the HTTP responses and in HTTP PUT requests. + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure (inlined) + _links2: + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + subscriptions: + type: array + items: + $ref: '#/components/schemas/Subscriptions' + description: List of hyperlinks related to the resource. + example: + subscriptions: + - subscriptionType: subscriptionType + href: http://example.com/aeiou + - subscriptionType: subscriptionType + href: http://example.com/aeiou + self: + href: http://example.com/aeiou + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Structure (inlined) + _links3: + required: + - subscription + type: object + properties: + subscription: + $ref: '#/components/schemas/LinkType' + description: Links to resources related to this notification. + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Structure (inlined) + Subscriptions: + minItems: 0 + required: + - href + - subscriptionType + type: object + properties: + href: + type: string + description: The URI referring to the subscription. + format: uri + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Uri + subscriptionType: + type: string + description: Type of the subscription. The values are as defined in the + "subscriptionType" attribute for each different V2X information event + subscription data type. + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + description: The service consumer's subscriptions. + example: + subscriptionType: subscriptionType + href: http://example.com/aeiou + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Structure (inlined) + subscriptions_body: + oneOf: + - $ref: '#/components/schemas/ProvChgUuUniSubscription' + - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' + - $ref: '#/components/schemas/ProvChgPc5Subscription' + - $ref: '#/components/schemas/V2xMsgSubscription' + inline_response_200: + oneOf: + - $ref: '#/components/schemas/ProvChgUuUniSubscription' + - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' + - $ref: '#/components/schemas/ProvChgPc5Subscription' + - $ref: '#/components/schemas/V2xMsgSubscription' + - $ref: '#/components/schemas/PredQosSubscription' + subscriptions_subscriptionId_body: + oneOf: + - $ref: '#/components/schemas/ProvChgUuUniSubscription' + - $ref: '#/components/schemas/ProvChgUuMbmsSubscription' + - $ref: '#/components/schemas/ProvChgPc5Subscription' + - $ref: '#/components/schemas/V2xMsgSubscription' + - $ref: '#/components/schemas/PredQosSubscription' + TestNotification__links: + required: + - subscription + type: object + properties: + subscription: + $ref: '#/components/schemas/LinkType' + description: 'Hyperlink related to the resource. ' responses: - '204': + "204": description: No Content - '206': + "206": description: Partial content - '400': - description: 'Bad Request : used to indicate that incorrect parameters were passed to the request.' + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '401': - description: 'Unauthorized : used when the client did not submit credentials.' + "401": + description: "Unauthorized : used when the client did not submit credentials." content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '403': - description: 'Forbidden : operation is not allowed given the current status of the resource.' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '404': - description: 'Not Found : used when a client provided a URI that cannot be mapped to a valid resource URI.' + "404": + description: "Not Found : used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '406': - description: 'Not Acceptable : used to indicate that the server cannot provide the any of the content formats supported by the client.' + "406": + description: "Not Acceptable : used to indicate that the server cannot provide\ + \ the any of the content formats supported by the client." content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '409': - description: 'Conflict : The operation cannot be executed currently, due to a conflict with the state of the resource' + "409": + description: "Conflict : The operation cannot be executed currently, due to\ + \ a conflict with the state of the resource" content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '412': - description: 'Precondition failed : used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT' + "412": + description: "Precondition failed : used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts when\ + \ using PUT" content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '415': - description: 'Unsupported Media Type : used to indicate that the server or the client does not support the content type of the entity body.' + "415": + description: "Unsupported Media Type : used to indicate that the server or\ + \ the client does not support the content type of the entity body." content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '422': - description: 'Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.' + "422": + description: "Unprocessable Entity : used to indicate that the server understands\ + \ the content type of the request entity and that the syntax of the request\ + \ entity is correct but that the server is unable to process the contained\ + \ instructions. This error condition can occur if an JSON request body is\ + \ syntactically correct but semantically incorrect, for example if the target\ + \ area for the request is considered too large. This error condition can also\ + \ occur if the capabilities required by the request are not supported." content: application/json: schema: $ref: '#/components/schemas/ProblemDetails' - '429': - description: 'Too Many Requests : used when a rate limiter has triggered.' + "429": + description: "Too Many Requests : used when a rate limiter has triggered." content: application/json: schema: -- GitLab From cb79b9db10af83ec478bd2f059dc8bfe41aee89b Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 6 Mar 2024 15:03:16 +0100 Subject: [PATCH 04/58] Bug fixed in swagger file: Add /sandbox in servers.url URI --- config/api/vis-api.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/api/vis-api.yaml b/config/api/vis-api.yaml index 16c5781..3097dcc 100644 --- a/config/api/vis-api.yaml +++ b/config/api/vis-api.yaml @@ -14,7 +14,7 @@ externalDocs: description: "ETSI GS MEC 030 V2X Information Services API, v3.1.1" url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.01.01_60/gs_mec030v030101p.pdf servers: -- url: https://localhost/vis/v2 +- url: https://localhost/sandboxname/vis/v2 tags: - name: queries description: Queries -- GitLab From bb64118829bbdd6daa097cc766f73b1712ff950e Mon Sep 17 00:00:00 2001 From: Ayesha Ayub Date: Sun, 17 Mar 2024 03:05:43 +0500 Subject: [PATCH 05/58] Update API file for MEC 028 to v2.3.1 --- config/api/wais-api.yaml | 55 ++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/config/api/wais-api.yaml b/config/api/wais-api.yaml index 6414ea3..eb6785f 100644 --- a/config/api/wais-api.yaml +++ b/config/api/wais-api.yaml @@ -3,18 +3,18 @@ info: contact: url: 'https://forge.etsi.org/rep/mec/gs028-wai-api' title: ETSI GS MEC 028 - WLAN Access Information API - version: 2.2.1 + version: 2.3.1 description: 'The ETSI MEC ISG MEC028 WLAN Access Information API described using OpenAPI -

**Note**
MEC Sandbox supports all WAI API endpoints and a limited set of subscription types; complete details on the WAI API can be found on [ETSI Forge](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.02.01_60/gs_mec028v020201p.pdf). +

**Note**
MEC Sandbox supports all WAI API endpoints and a limited set of subscription types; complete details on the WAI API can be found on [ETSI Forge](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.03.01_60/gs_mec028v020301p.pdf).

Supported subscriptions types:

- AssocStaSubscription' license: name: BSD-3-Clause url: 'https://forge.etsi.org/legal-matters' externalDocs: - description: ETSI MEC028 V2.2.1 WLAN Information API + description: ETSI MEC028 V2.3.1 WLAN Information API url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.02.01_60/gs_mec028v020201p.pdf + https://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.03.01_60/gs_mec028v020301p.pdf servers: - url: 'https://localhost/sandboxname/wai/v2' tags: @@ -146,6 +146,9 @@ paths: example: subscriptionType: AssocStaSubscription callbackReference: 'http://meAppClient.example.com/wai/v2/notifications/1' + expiryDeadline: + seconds: 1977836800 + nanoSeconds: 0 apId: bssid: 005C0A0A0A0A notificationEvent: @@ -211,7 +214,7 @@ paths: responses: '204': $ref: '#/components/responses/204' - '/subscriptions/{subscriptionId}': + /subscriptions/{subscriptionId}: get: tags: - wai @@ -400,6 +403,9 @@ paths: href: 'http://meAppServer.example.com/wai/v2/measurements/meas123' staId: macId: 005C01111111 + ssid: + - myNetworkSsid + - myOtherNetworkSsid measurementId: myId1 measurementInfo: {} '400': @@ -418,7 +424,7 @@ paths: $ref: '#/components/responses/422' '429': $ref: '#/components/responses/429' - '/measurements/{measurementConfigId}': + /measurements/{measurementConfigId}: get: tags: - unsupported @@ -442,6 +448,9 @@ paths: href: 'http://meAppServer.example.com/wai/v2/measurements/meas123' staId: macId: 005C01111111 + ssid: + - myNetworkSsid + - myOtherNetworkSsid measurementId: myId1 measurementInfo: {} '400': @@ -477,6 +486,9 @@ paths: href: 'http://meAppServer.example.com/wai/v2/measurements/meas123' staId: macId: 005C01111111 + ssid: + - myNetworkSsid + - myOtherNetworkSsid measurementId: myId1 measurementInfo: {} parameters: @@ -494,6 +506,9 @@ paths: href: 'http://meAppServer.example.com/wai/v2/measurements/123' staId: macId: 005C01111111 + ssid: + - myNetworkSsid + - myOtherNetworkSsid measurementId: myId1 measurementInfo: {} '400': @@ -844,7 +859,7 @@ components: Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests. properties: - self: + self: $ref: '#/components/schemas/LinkType' required: - self @@ -854,6 +869,8 @@ components: apId: $ref: '#/components/schemas/ApIdentity' callbackReference: + description: >- + URI exposed by the client on which to receive notifications type: string expiryDeadline: $ref: '#/components/schemas/TimeStamp' @@ -899,9 +916,8 @@ components: x-etsi-mec-origin-type: Uint8 requestTestNotification: description: >- - Set to TRUE by the service consumer to request a test notification - on the callbackReference URI to determine if it is reachable by the - WAIS for notifications. + Set to TRUE by the service consumer to request a test notification via HTTP + on the callbackReference URI. type: boolean x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean @@ -921,7 +937,7 @@ components: BeaconReport: properties: antennaId: - description: "The Antenna ID field contains the identifying number for the antenna(s) used for this measurement. Antenna ID is defined in section\_9.4.2.40 of IEEE 802.11-2016 [8]." + description: "The Antenna ID field contains the identifying number for the antenna(s) used for this measurement. Antenna ID is defined in clause\_9.4.2.40 of IEEE 802.11-2016 [8]." format: uint8 type: integer x-etsi-mec-cardinality: 0..1 @@ -966,7 +982,7 @@ components: x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 rcpi: - description: "RCPI indicates the received channel power of the Beacon, Measurement Pilot, or Probe Response frame, which is a logarithmic function of the received signal power, as defined in section\_9.4.2.38 of IEEE 802.11-2016 [8]." + description: "RCPI indicates the received channel power of the Beacon, Measurement Pilot, or Probe Response frame, which is a logarithmic function of the received signal power, as defined in clause\_9.4.2.38 of IEEE 802.11-2016 [8]." format: uint8 type: integer x-etsi-mec-cardinality: 0..1 @@ -974,7 +990,7 @@ components: reportedFrameInfo: $ref: '#/components/schemas/ReportedBeaconFrameInfo' rsni: - description: "RSNI indicates the received signal-to-noise indication for the Beacon, Measurement Pilot, or Probe Response frame, as described in section\_9.4.2.41 of IEEE 802.11-2016 [8]." + description: "RSNI indicates the received signal-to-noise indication for the Beacon, Measurement Pilot, or Probe Response frame, as described in clause\_9.4.2.41 of IEEE 802.11-2016 [8]." format: uint8 type: integer x-etsi-mec-cardinality: 0..1 @@ -1035,7 +1051,7 @@ components: x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Uint8 threshold: - description: "The threshold subfield contains either the threshold value or the offset value to be used for conditional reporting.\n\nFor reportingCondition subfield with values 1 and 2, the threshold value is a logarithmic function of the received signal power, as defined in section\_9.4.2.38 of IEEE 802.11-2016 [8].\n\nFor reportingCondition subfield values 3 and 4, the threshold value is a logarithmic function of the signal-to-noise ratio, as described in section\_9.4.2.41 of IEEE 802.11-2016 [8].\n\nFor reportingCondition subfield values 5 to 10, the offset value is an 8-bit 2s complement integer in units of 0,5 dBm. The indicated reporting condition applies individually to each measured Beacon, Measurement Pilot, or Probe Response frame." + description: "The threshold subfield contains either the threshold value or the offset value to be used for conditional reporting.\n\nFor reportingCondition subfield with values 1 and 2, the threshold value is a logarithmic function of the received signal power, as defined in clause\_9.4.2.38 of IEEE 802.11-2016 [8].\n\nFor reportingCondition subfield values 3 and 4, the threshold value is a logarithmic function of the signal-to-noise ratio, as described in clause\_9.4.2.41 of IEEE 802.11-2016 [8].\n\nFor reportingCondition subfield values 5 to 10, the offset value is an 8-bit 2s complement integer in units of 0,5 dBm. The indicated reporting condition applies individually to each measured Beacon, Measurement Pilot, or Probe Response frame." format: uint8 type: integer x-etsi-mec-cardinality: '1' @@ -1998,6 +2014,7 @@ components: x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Structure (inlined) callbackReference: + description: URI exposed by the client on which to receive notifications. type: string expiryDeadline: $ref: '#/components/schemas/TimeStamp' @@ -2013,8 +2030,7 @@ components: requestTestNotification: description: >- Set to TRUE by the service consumer to request a test notification - on the callbackReference URI to determine if it is reachable by the - WAIS for notifications. + via HTTP on the callbackReference URI. type: boolean x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean @@ -2438,6 +2454,8 @@ components: x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Structure (inlined) callbackReference: + description: >- + URI exposed by the client on which to receive notifications type: string expiryDeadline: $ref: '#/components/schemas/TimeStamp' @@ -2510,9 +2528,8 @@ components: x-etsi-mec-origin-type: Uint8 requestTestNotification: description: >- - Set to TRUE by the service consumer to request a test notification - on the callbackReference URI to determine if it is reachable by the - WAIS for notifications. + Set to TRUE by the service consumer to request a test notification via HTTP + on the callbackReference URI. type: boolean x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean -- GitLab From dd7fcf5eb835e71e894e3488c9607b8117ae7618 Mon Sep 17 00:00:00 2001 From: Ayesha Ayub Date: Tue, 19 Mar 2024 15:45:52 +0500 Subject: [PATCH 06/58] fix issue in swagger file of wais --- config/api/wais-api.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/api/wais-api.yaml b/config/api/wais-api.yaml index eb6785f..630ca69 100644 --- a/config/api/wais-api.yaml +++ b/config/api/wais-api.yaml @@ -5,9 +5,9 @@ info: title: ETSI GS MEC 028 - WLAN Access Information API version: 2.3.1 description: 'The ETSI MEC ISG MEC028 WLAN Access Information API described using OpenAPI -

**Note**
MEC Sandbox supports all WAI API endpoints and a limited set of subscription types; complete details on the WAI API can be found on [ETSI Forge](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.03.01_60/gs_mec028v020301p.pdf). -

Supported subscriptions types: -

- AssocStaSubscription' +

**Note**
MEC Sandbox supports all WAI API endpoints and a limited set of subscription types; complete details on the WAI API can be found on [ETSI Forge](http://www.etsi.org/deliver/etsi_gs/MEC/001_099/028/02.03.01_60/gs_mec028v020301p.pdf). +

Supported subscriptions types: +

- AssocStaSubscription' license: name: BSD-3-Clause url: 'https://forge.etsi.org/legal-matters' -- GitLab From 2c7c32b093c586cfb168f6a21d8072ea581e7f01 Mon Sep 17 00:00:00 2001 From: Yann Garcia Date: Mon, 25 Mar 2024 12:17:26 +0000 Subject: [PATCH 07/58] Update MEC 011 Mgmt Support for both server and client --- config/api/service-mgmt.yaml | 2863 ++++++++++++++++++++++------------ 1 file changed, 1841 insertions(+), 1022 deletions(-) diff --git a/config/api/service-mgmt.yaml b/config/api/service-mgmt.yaml index dcd5f19..d6be982 100644 --- a/config/api/service-mgmt.yaml +++ b/config/api/service-mgmt.yaml @@ -1,685 +1,1828 @@ openapi: 3.0.0 -servers: - - url: 'https://localhost/sandboxname/mec_service_mgmt/v1' info: title: MEC Service Management API - version: 2.2.1 - description: - 'The ETSI MEC ISG MEC011 MEC Service Management API described using OpenAPI. -

**Note**
MEC Sandbox supports all Service Management API endpoints; complete details on Service Management API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf).' - license: - name: BSD-3-Clause - url: 'https://forge.etsi.org/legal-matters' + description: The ETSI MEC ISG MEC011 MEC Service Management API described using + OpenAPI contact: email: cti_support@etsi.org + license: + name: BSD-3-Clause + url: https://forge.etsi.org/legal-matters + version: 3.1.1 externalDocs: - description: 'ETSI GS MEC011 Application Enablement API, V2.2.1' - url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf + description: "ETSI GS MEC011 Application Enablement API, V3.1.1" + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf +servers: +- url: http://localhost/sandboxname/mec_service_mgmt/v1 +- url: https://localhost/sandboxname/mec_service_mgmt/v1 tags: - - name: mec_service_mgmt +- name: appSubscriptions +- name: appServices +- name: services +- name: transports +- name: callbacks +- name: individualMECservice paths: - '/services': + /applications/{appInstanceId}/subscriptions: get: - description: >- - This method retrieves information about a list of mecService resources. - This method is typically used in "service availability query" procedure - operationId: Services_GET tags: - - mec_service_mgmt + - appSubscriptions + summary: Get subscriptions + description: "The GET method may be used to request information about all subscriptions\ + \ for this requestor. Upon success, the response contains entity body with\ + \ all the subscriptions for the requestor." + operationId: ApplicationsSubscriptions_GET + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: "Upon success, a response message content containing the list\ + \ of links to the requested subscriptions is returned." + content: + application/json: + schema: + $ref: '#/components/schemas/MecServiceMgmtApiSubscriptionLinkList' + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + post: + tags: + - appSubscriptions + summary: Create subscription + description: "The POST method may be used to create a new subscription. One\ + \ example use case is to create a new subscription to the MEC service availability\ + \ notifications. Upon success, the response contains entity body describing\ + \ the created subscription." + operationId: ApplicationsSubscriptions_POST parameters: - - $ref: '#/components/parameters/Query.SerInstanceId' - - $ref: '#/components/parameters/Query.SerName' - - $ref: '#/components/parameters/Query.SerCategoryId' - - $ref: '#/components/parameters/Query.ConsumedLocalOnly' - - $ref: '#/components/parameters/Query.IsLocal' - - $ref: '#/components/parameters/Query.LocalityType' + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: Message content in the request contains a subscription to the + MEC application termination notifications that is to be created. + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + required: true responses: - '200': - $ref: '#/components/responses/Services200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '414': - $ref: '#/components/responses/414' - '/services/{serviceId}': - parameters: - - $ref: '#/components/parameters/Path.ServiceId' + "201": + description: Entity body in the request contains a subscription to the MEC + service availability notifications that is to be created. + headers: + location: + description: The resource URI of the created resource + style: simple + explode: false + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + callbacks: + ServiceAvailailityNotification: + '{$request.body#/callbackReference}': + post: + tags: + - callbacks + summary: Create callback + description: |- + 'Represents the service availability information that is used in the following cases + when the MEC platform announces the newly available + services to the authorized relevant MEC applications (e.g. the applications that indicate the services as "optional" or "required") that are subscribed to the corresponding service availability notifications when the MEC platform notifies the authorized relevant applications that are subscribed to the corresponding service availability notifications about the service availability changes.' + operationId: ServiceAvailabilityNotification_POST + requestBody: + $ref: '#/components/requestBodies/ServiceAvailabilityNotification' + responses: + "200": + description: "Expected responses from callback consumer, if it accepts\ + \ the callback" + deprecated: false + /applications/{appInstanceId}/subscriptions/{subscriptionId}: get: - description: >- - This method retrieves information about a mecService resource. This - method is typically used in "service availability query" procedure - operationId: ServicesServiceId_GET tags: - - mec_service_mgmt + - appSubscriptions + summary: Get subscription + description: "The GET method requests information about a subscription for this\ + \ requestor. Upon success, the response contains message content with the\ + \ subscription for the requestor." + operationId: ApplicationsSubscription_GET + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string responses: - '200': - $ref: '#/components/responses/ServicesServiceId200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '/applications/{appInstanceId}/services': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' + "200": + description: "Upon success, a response message content containing the requested\ + \ subscription is returned." + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + delete: + tags: + - appSubscriptions + summary: delete subscription + description: This method deletes a mecSrvMgmtSubscription. This method is typically + used in "Unsubscribing from service availability event notifications" procedure. + operationId: ApplicationsSubscription_DELETE + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string + responses: + "204": + description: No Content + content: {} + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /applications/{appInstanceId}/services: get: - description: >- - This method retrieves information about a list of mecService resources. + tags: + - appServices + summary: get services + description: This method retrieves information about a list of mecService resources. This method is typically used in "service availability query" procedure operationId: AppServices_GET - tags: - - mec_service_mgmt parameters: - - $ref: '#/components/parameters/Query.SerInstanceId' - - $ref: '#/components/parameters/Query.SerName' - - $ref: '#/components/parameters/Query.SerCategoryId' - - $ref: '#/components/parameters/Query.ConsumedLocalOnly' - - $ref: '#/components/parameters/Query.IsLocal' - - $ref: '#/components/parameters/Query.LocalityType' + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: ser_instance_id + in: query + description: A MEC application instance may use multiple ser_instance_ids + as an input parameter to query the availability of a list of MEC service + instances. Either "ser_instance_id" or "ser_name" or "ser_category_id" or + none of them shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_name + in: query + description: A MEC application instance may use multiple ser_names as an input + parameter to query the availability of a list of MEC service instances. + Either "ser_instance_id" or "ser_name" or "ser_category_id" or none of them + shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_category_id + in: query + description: A MEC application instance may use ser_category_id as an input + parameter to query the availability of a list of MEC service instances in + a serCategory. Either "ser_instance_id" or "ser_name" or "ser_category_id" + or none of them shall be present. + required: false + style: form + explode: true + schema: + type: string + - name: consumed_local_only + in: query + description: Indicate whether the service can only be consumed by the MEC applications + located in the same locality (as defined by scopeOfLocality) as this service + instance. + required: false + style: form + explode: true + schema: + type: boolean + - name: is_local + in: query + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + required: false + style: form + explode: true + schema: + type: boolean + - name: scope_of_locality + in: query + description: A MEC application instance may use scope_of_locality as an input parameter + to query the availability of a list of MEC service instances with a certain + scope of locality. + required: false + style: form + explode: true + schema: + type: string responses: - '200': - $ref: '#/components/responses/Services200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '414': - $ref: '#/components/responses/414' + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + type: array + example: + - - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + items: + $ref: '#/components/schemas/ServiceInfo' + x-content-type: application/json + example: + ServiceInfoList: + value: + - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + - serInstanceId: ServiceInstance345 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.1 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "414": + description: It is used to indicate that the server is refusing to process + the request because the request URI is longer than the server is willing + or able to process. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false post: - description: >- - This method is used to create a mecService resource. This method is - typically used in "service availability update and new service - registration" procedure - operationId: AppServices_POST tags: - - mec_service_mgmt - responses: - '201': - $ref: '#/components/responses/Services201' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' + - appServices + summary: create service + description: This method is used to create a mecService resource. This method + is typically used in "service availability update and new service registration" + procedure + operationId: AppServices_POST + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string requestBody: - $ref: '#/components/requestBodies/ServicesPost' - '/applications/{appInstanceId}/services/{serviceId}': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' - - $ref: '#/components/parameters/Path.ServiceId' + description: New ServiceInfo with updated "state" is included as entity body + of the request + content: + application/json: + schema: + $ref: '#/components/schemas/appInstanceId_services_body' + required: true + responses: + "201": + description: "Upon success, the HTTP response shall include a Location HTTP\ + \ header that contains the resource URI of the created resource." + headers: + location: + description: The resource URI of the created resource + style: simple + explode: false + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /applications/{appInstanceId}/services/{serviceId}: get: - description: >- - This method retrieves information about a mecService resource. This - method is typically used in "service availability query" procedure - operationId: AppServicesServiceId_GET tags: - - mec_service_mgmt + - appServices + summary: get service + description: This method retrieves information about a mecService resource. + This method is typically used in "service availability query" procedure + operationId: AppServicesServiceId_GET + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: serviceId + in: path + description: Represents a MEC service instance (see note). + required: true + style: simple + explode: false + schema: + type: string responses: - '200': - $ref: '#/components/responses/ServicesServiceId200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false put: + tags: + - appServices + summary: update service description: This method updates the information about a mecService resource operationId: AppServicesServiceId_PUT - tags: - - mec_service_mgmt - responses: - '200': - $ref: '#/components/responses/ServicesServiceId200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '412': - $ref: '#/components/responses/412' + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: serviceId + in: path + description: Represents a MEC service instance. (see note) + required: true + style: simple + explode: false + schema: + type: string requestBody: - $ref: '#/components/requestBodies/ServicesServiceId' + description: New ServiceInfo with updated "state" is included as entity body + of the request + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + required: true + responses: + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "412": + description: "Precondition Failed. It is used when a condition has failed\ + \ during conditional requests, e.g. when using ETags to avoid write conflicts." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false delete: - description: >- - This method deletes a mecService resource. This method is typically used in the service deregistration procedure. - operationId: AppServicesServiceId_DELETE tags: - - mec_service_mgmt + - appServices + summary: delete service + description: 'This method deletes a mecService resource. This method is typically + used in the service deregistration procedure. ' + operationId: AppServicesServiceId_DELETE + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: serviceId + in: path + description: Represents a MEC service instance. (see note) + required: true + style: simple + explode: false + schema: + type: string responses: - '204': + "204": description: No Content - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '/applications/{appInstanceId}/subscriptions': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' + content: {} + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /services: get: - description: >- - The GET method may be used to request information about all - subscriptions for this requestor. Upon success, the response contains - entity body with all the subscriptions for the requestor. - operationId: ApplicationsSubscriptions_GET tags: - - mec_service_mgmt + - services + summary: get services + description: This method retrieves information about a list of mecService resources. + This method is typically used in "service availability query" procedure + operationId: Services_GET + parameters: + - name: ser_instance_id + in: query + description: A MEC application instance may use multiple ser_instance_ids + as an input parameter to query the availability of a list of MEC service + instances. Either "ser_instance_id" or "ser_name" or "ser_category_id" or + none of them shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_name + in: query + description: A MEC application instance may use multiple ser_names as an input + parameter to query the availability of a list of MEC service instances. + Either "ser_instance_id" or "ser_name" or "ser_category_id" or none of them + shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_category_id + in: query + description: A MEC application instance may use ser_category_id as an input + parameter to query the availability of a list of MEC service instances in + a serCategory. Either "ser_instance_id" or "ser_name" or "ser_category_id" + or none of them shall be present. + required: false + style: form + explode: true + schema: + type: string + - name: consumed_local_only + in: query + description: Indicate whether the service can only be consumed by the MEC applications + located in the same locality (as defined by scopeOfLocality) as this service + instance. + required: false + style: form + explode: true + schema: + type: boolean + - name: is_local + in: query + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + required: false + style: form + explode: true + schema: + type: boolean + - name: scope_of_locality + in: query + description: A MEC application instance may use scope_of_locality as an input parameter + to query the availability of a list of MEC service instances with a certain + scope of locality. + required: false + style: form + explode: true + schema: + type: string responses: - '200': - $ref: '#/components/responses/ApplicationsSubscriptions200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - post: - description: >- - The POST method may be used to create a new subscription. One example - use case is to create a new subscription to the MEC service - availability notifications. Upon success, the response contains entity - body describing the created subscription. - operationId: ApplicationsSubscriptions_POST + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + type: array + example: + - - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + items: + $ref: '#/components/schemas/ServiceInfo' + x-content-type: application/json + example: + ServiceInfoList: + value: + - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + - serInstanceId: ServiceInstance345 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.1 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "414": + description: It is used to indicate that the server is refusing to process + the request because the request URI is longer than the server is willing + or able to process. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /services/{serviceId}: + get: tags: - - mec_service_mgmt + - services + summary: get service + description: This method retrieves information about a mecService resource. + This method is typically used in "service availability query" procedure + operationId: ServicesServiceId_GET + parameters: + - name: serviceId + in: path + description: Represents a MEC service instance. (see note) + required: true + style: simple + explode: false + schema: + type: string + x-etsi-notes: "NOTE:\t serviceId corresponds to serInstanceId" responses: - '201': - $ref: '#/components/responses/ApplicationsSubscriptions201' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - requestBody: - $ref: '#/components/requestBodies/ApplicationsSubscriptions' - callbacks: - serviceAvailabilityNotification: - $ref: '#/components/callbacks/ServiceAvailabilityNotification' - '/applications/{appInstanceId}/subscriptions/{subscriptionId}': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' - - $ref: '#/components/parameters/Path.SubscriptionId' + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /transports: get: - description: >- - The GET method requests information about a subscription for this - requestor. Upon success, the response contains entity body with the - subscription for the requestor. - operationId: ApplicationsSubscription_GET tags: - - mec_service_mgmt + - transports + summary: Get transports + description: This method retrieves information about a list of available transports. + This method is typically used by a service-producing application to discover + transports provided by the MEC platform in the "transport information query" + procedure + operationId: Transports_GET + parameters: [] responses: - '200': - $ref: '#/components/responses/ApplicationsSubscription200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - delete: - description: >- - This method deletes a mecSrvMgmtSubscription. This method is typically used - in "Unsubscribing from service availability event notifications" - procedure. - operationId: ApplicationsSubscription_DELETE + "200": + description: It is used to indicate nonspecific success. The response messages + content contains a representation of the resource. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TransportInfo' + x-content-type: application/json + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /resource_uri_allocated_by_MEC_platform: + get: tags: - - mec_service_mgmt + - individualMECservice + summary: get mecServiceLiveness + description: This method retrieves information about an "Individual mecServiceLiveness" + resource + operationId: get_individual_MEC_service responses: - '204': - description: No Content - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '/transports': - get: - description: >- - This method retrieves information about a list of available transports. - This method is typically used by a service-producing application to - discover transports provided by the MEC platform in the - "transport information query" procedure - operationId: Transports_GET + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceLivenessInfo' + "400": + description: "It is used to indicate that incorrect parameters were passed\ + \ to the request. In the returned ProblemDetails structure, the \"detail\"\ + \ attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: The operation is not allowed given the current status of the + resource. More information shall be provided in the "detail" attribute + of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "It is used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI. In the returned ProblemDetails structure, the\ + \ \"detail\" attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + patch: tags: - - mec_service_mgmt + - individualMECservice + summary: Update mecServiceLiveness + description: This method updates a resource on top of the existing resource + state with partial changes described by the client. + operationId: patch_individual_MEC_service + requestBody: + description: It contains an update of the liveness state. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceLivenessUpdate' + required: true responses: - '200': - $ref: '#/components/responses/Transports200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' + "200": + description: "Upon success, a response message content is returned containing\ + \ the updated liveness interval value of the service Instance." + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceLivenessInfo' + "204": + description: Successful response sent when there is no need to provide a + new liveness interval value to the service Instance. + content: {} + "400": + description: "It is used to indicate that incorrect parameters were passed\ + \ to the request. In the returned ProblemDetails structure, the \"detail\"\ + \ attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: The operation is not allowed given the current status of the + resource. More information shall be provided in the "detail" attribute + of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "It is used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI. In the returned ProblemDetails structure, the\ + \ \"detail\" attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "409": + description: The operation is not allowed due to a conflict with the state + of the resource. The MEC platform shall respond with this code if the + service instance is in "INACTIVE" state. More information shall be provided + in the "detail" attribute of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "It is used when a condition has failed during conditional\ + \ requests, e.g. when using ETags to avoid write conflicts. In the returned\ + \ ProblemDetails structure, the \"detail\" attribute should convey more\ + \ information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' components: schemas: CategoryRef: - description: This type represents the category reference - type: object + title: CategoryRef required: - - href - - id - - name - - version + - href + - id + - name + - version + type: object properties: href: - description: Reference of the catalogue type: string - format: uri + description: Reference of the catalogue + example: "[\"/example/catalogue1\"]" id: - description: Unique identifier of the category type: string + description: Unique identifier of the category + example: "[\"id12345\"]" name: - description: Name of the category, example values include RNI, Location & Bandwidth Management type: string + description: "Name of the category, example values include RNI, Location\ + \ & Bandwidth Management" + example: "[\"RNI\"]" version: - description: Category version type: string - CategoryRefs: - description: Categories of services about which to report events. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/CategoryRef' - EndPointInfoAddresses: - description: >- - Entry point information of the service as one or more pairs of IP - address and port + description: Category version + example: "[\"version1\"]" + description: This type represents the category reference + example: + name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + EndPointInfo.Address: + title: EndPointInfo.Address + required: + - host + - port type: object + properties: + host: + type: string + description: Host portion of the address + example: "[\"192.0.2.0\"]" + port: + type: integer + description: Port portion of the address + description: A IP address and port pair + EndPointInfo.Addresses: + title: EndPointInfo.Addresses required: - - addresses + - addresses + type: object properties: addresses: type: array - minItems: 0 + description: Entry point information of the service as one or more pairs + of IP address and port. See note. items: - description: A IP address and port pair - type: object - required: - - host - - port - properties: - host: - description: Host portion of the address - type: string - port: - description: Port portion of the address - type: integer - format: uint32 - EndPointInfoAlternative: - description: >- - Entry point information of the service in a format defined by an - implementation, or in an external specification. - type: object + $ref: '#/components/schemas/EndPointInfo.Address' + description: This type represents information about a transport endpoint. + EndPointInfo.Alternative: + title: EndPointInfo.Alternative required: - - alternative + - alternative + type: object properties: alternative: type: object - EndPointInfoUris: - description: >- - Entry point information of the service as string, formatted according to - URI syntax - type: object + description: "Entry point information of the service in a format defined\ + \ by an implementation, or in an external specification. See note." + description: This type represents information about a transport endpoint. + EndPointInfo.Uris: + title: EndPointInfo.Uris required: - - uris + - uris + type: object properties: uris: type: array - minItems: 0 + description: "Entry point information of the service as string, formatted\ + \ according to URI syntax" + items: + type: string + description: This type represents information about a transport endpoint. + EndPointInfo.Fqdn: + title: EndPointInfo.Fqdn + required: + - fqdn + type: object + properties: + fqdn: + type: array + description: Fully Qualified Domain Name of the service. See note. items: - description: Entry point information of the service type: string - format: uri + description: 'This type represents information about a transport endpoint. ' LinkType: - description: This type represents a type of link and may be referenced from data structures + title: LinkType type: object properties: href: - description: URI referring to a resource type: string - format: uri - example: '/mecSerMgmtApi/example' - SubscriptionLinkList: - description: >- - This type represents a list of links related to currently existing - subscriptions for a MEC application instance. This information - is returned when sending a request to receive current subscriptions. + description: URI referring to a resource + example: "[\"/mecSerMgmtApi/example\"]" + description: This type represents a type of link and may be referenced from + data structures + example: + href: "[\"/mecSerMgmtApi/example\"]" + MecServiceMgmtApiSubscriptionLinkList.Links: + title: MecServiceMgmtApiSubscriptionLinkList.Links + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + subscriptions: + type: array + description: The MEC application instance's subscriptions + items: + $ref: '#/components/schemas/MecServiceMgmtApiSubscriptionLinkList.Subscription' + description: Self-referring URI. + example: + subscriptions: + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + self: + href: "[\"/mecSerMgmtApi/example\"]" + MecServiceMgmtApiSubscriptionLinkList.Subscription: + title: MecServiceMgmtApiSubscriptionLinkList.Subscription + required: + - href + - rel type: object + properties: + href: + type: string + description: URI referring to a resource + example: "[\"/mecSerMgmtApi/example\"]" + rel: + type: string + description: The value shall be se to SerAvailabilityNotificationSubscription. + description: A link to a subscription. + example: + rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + MecServiceMgmtApiSubscriptionLinkList: + title: MecServiceMgmtApiSubscriptionLinkList required: - - _links + - _links + type: object properties: _links: - description: Self-referring URI. - type: object - required: - - self - properties: - self: - $ref: '#/components/schemas/LinkType' - subscriptions: - description: The MEC application instance's subscriptions - type: array - items: - description: A link to a subscription. - type: object - required: - - href - - subscriptionType - properties: - href: - description: URI referring to a resource - type: string - format: uri - subscriptionType: - description: >- - Type of the subscription. The values are as defined in - the "subscriptionType" attribute for each different Mp1 - event subscription data type. - type: string + $ref: '#/components/schemas/MecServiceMgmtApiSubscriptionLinkList.Links' + description: This type represents a list of links related to currently existing + subscriptions for a MEC application instance. This information is returned + when sending a request to receive current subscriptions. + example: + _links: + subscriptions: + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + self: + href: "[\"/mecSerMgmtApi/example\"]" ProblemDetails: + title: ProblemDetails type: object properties: type: type: string - format: uri - description: >- - A URI reference according to IETF RFC 3986 that identifies the problem - type + description: A URI reference according to IETF RFC 3986 that identifies + the problem type title: type: string - description: 'A short, human-readable summary of the problem type' + description: "A short, human-readable summary of the problem type" status: type: integer - format: uint32 description: The HTTP status code for this occurrence of the problem detail: type: string - description: A human-readable explanation specific to this occurrence of the problem + description: A human-readable explanation specific to this occurrence of + the problem instance: type: string - format: uri - description: A URI reference that identifies the specific occurrence of the problem - required: - - status - - detail - GrantType: - description: OAuth 2.0 grant type + description: A URI reference that identifies the specific occurrence of + the problem + SecurityInfo.OAuth2Info.GrantType: + title: SecurityInfo.OAuth2Info.GrantType type: string + description: OAuth 2.0 grant type + example: "[\"OAUTH2_CLIENT_CREDENTIALS\"]" enum: - - OAUTH2_AUTHORIZATION_CODE - - OAUTH2_IMPLICIT_GRANT - - OAUTH2_RESOURCE_OWNER - - OAUTH2_CLIENT_CREDENTIALS - example: 'OAUTH2_CLIENT_CREDENTIALS' - OAuth2Info: - description: Parameters related to use of OAuth 2.0 - type: object + - OAUTH2_AUTHORIZATION_CODE + - OAUTH2_IMPLICIT_GRANT + - OAUTH2_RESOURCE_OWNER + - OAUTH2_CLIENT_CREDENTIALS + SecurityInfo.OAuth2Info: + title: SecurityInfo.OAuth2Info required: - - grantTypes - - tokenEndpoint + - grantTypes + - tokenEndpoint + type: object properties: grantTypes: - description: >- - List of supported OAuth 2.0 grant types. - type: array - minItems: 1 maxItems: 4 + minItems: 1 + type: array + description: List of supported OAuth 2.0 grant types. items: - $ref: '#/components/schemas/GrantType' + $ref: '#/components/schemas/SecurityInfo.OAuth2Info.GrantType' tokenEndpoint: - description: The token endpoint type: string - format: uri + description: The token endpoint + example: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + description: Parameters related to use of OAuth 2.0 + example: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" SecurityInfo: - description: This type represents security information related to a transport + title: SecurityInfo type: object properties: oAuth2Info: - $ref: '#/components/schemas/OAuth2Info' + $ref: '#/components/schemas/SecurityInfo.OAuth2Info' + description: This type represents security information related to a transport + example: + oAuth2Info: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" Self: - description: Self-referring URI. - type: object + title: Self required: - - self + - self + type: object properties: self: $ref: '#/components/schemas/LinkType' - readOnly: true + description: Self-referring URI. + example: + self: + href: "[\"/mecSerMgmtApi/example\"]" SerAvailabilityNotificationSubscription: - description: >- - This type represents a subscription to the notifications from the - MEC platform regarding the availability of a MEC service or a - list of MEC services. - type: object + title: SerAvailabilityNotificationSubscription required: - - subscriptionType - - callbackReference + - _links + - callbackReference + - subscriptionType + type: object properties: subscriptionType: - description: Shall be set to SerAvailabilityNotificationSubscription. type: string + description: Shall be set to SerAvailabilityNotificationSubscription. + example: "[\"SerAvailabilityNotificationSubscription\"]" callbackReference: - description: >- - URI selected by the MEC application instance to receive - notifications on the subscribed MEC service availability - information. This shall be included in both the request and the - response. type: string - format: uri + description: URI selected by the MEC application instance to receive notifications + on the subscribed MEC service availability information. This shall be + included in both the request and the response. _links: $ref: '#/components/schemas/Self' filteringCriteria: - description: >- - Filtering criteria to match services for which events are requested to be reported. - If absent, matches all services. All child attributes are combined with the logical - "AND" operation. - type: object - not: - required: [serInstanceIds, serNames, serCategories] - properties: - serInstanceIds: - $ref: '#/components/schemas/SerInstanceIds' - serNames: - $ref: '#/components/schemas/SerNames' - serCategories: - $ref: '#/components/schemas/CategoryRefs' - states: - $ref: '#/components/schemas/ServiceStates' - isLocal: - description: >- - Indicate whether the service is located in the same locality (as defined - by scopeOfLocality) as the consuming MEC application. - type: boolean - ServiceAvailabilityNotification: - description: >- - This type represents the service availability information. + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription.FilteringCriteria' + example: + filteringCriteria: + serNames: + - serNames + - serNames + serInstanceIds: + - serInstanceIds + - serInstanceIds + serCategories: + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + states: + - "[\"ACTIVE\"]" + - "[\"ACTIVE\"]" + isLocal: false + subscriptionType: "[\"SerAvailabilityNotificationSubscription\"]" + _links: + self: + href: "[\"/mecSerMgmtApi/example\"]" + callbackReference: callbackReference + x-etsi-notes: "NOTE:\tThe attributes \"serInstanceIds\", \"serNames\" and \"\ + serCategories\" provide mutually-exclusive alternatives to define a set of\ + \ services. Only one of them may be present." + SerAvailabilityNotificationSubscription.FilteringCriteria: + title: SerAvailabilityNotificationSubscription.FilteringCriteria type: object + properties: + serInstanceIds: + type: array + description: Identifiers of service instances about which to report events. + items: + type: string + serNames: + type: array + description: Names of services about which to report events. + items: + type: string + serCategories: + type: array + description: Categories of services about which to report events. + items: + $ref: '#/components/schemas/CategoryRef' + states: + type: array + description: "States of the services about which to report events. If the\ + \ event is a state change, this filter represents the state after the\ + \ change." + items: + $ref: '#/components/schemas/ServiceState' + isLocal: + type: boolean + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + example: false + description: "Filtering criteria to match services for which events are requested\ + \ to be reported. If absent, matches all services. All child attributes are\ + \ combined with the logical \"AND\" operation." + example: + serNames: + - serNames + - serNames + serInstanceIds: + - serInstanceIds + - serInstanceIds + serCategories: + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + states: + - "[\"ACTIVE\"]" + - "[\"ACTIVE\"]" + isLocal: false + ServiceAvailabilityNotification: + title: ServiceAvailabilityNotification required: - - notificationType - - serviceReferences - - _links + - _links + - notificationType + - serviceReferences + type: object properties: notificationType: - description: Shall be set to SerAvailabilityNotification. type: string + description: Shall be set to SerAvailabilityNotificationSubscription. + example: "[\"SerAvailabilityNotificationSubscription\"]" serviceReferences: type: array items: - description: List of links to services whose availability has changed. - type: object - required: - - serName - - serInstanceId - - state - - changeType - properties: - link: - $ref: '#/components/schemas/LinkType' - serName: - $ref: '#/components/schemas/SerName' - serInstanceId: - $ref: '#/components/schemas/SerInstanceId' - state: - $ref: '#/components/schemas/ServiceState' - changeType: - description: >- - Type of the change. Valid values: - ADDED: The service was newly added. - REMOVED: The service was removed. - STATE_CHANGED: Only the state of the service was changed. - ATTRIBUTES_CHANGED: At least one attribute of the service other than state was changed. The change may or may not include changing the state. - type: string - enum: - - ADDED - - REMOVED - - STATE_CHANGED - - ATTRIBUTES_CHANGED + $ref: '#/components/schemas/ServiceAvailabilityNotification.ServiceReferences' _links: $ref: '#/components/schemas/Subscription' + description: This type represents the service availability information. + ServiceAvailabilityNotification.ServiceReferences: + title: ServiceAvailabilityNotification.ServiceReferences + required: + - changeType + - serInstanceId + - serName + - state + type: object + properties: + link: + $ref: '#/components/schemas/LinkType' + serName: + type: string + description: The name of the service. This is how the service producing + MEC application identifies the service instance it produces. + example: "[\"ExampleService\"]" + serInstanceId: + type: string + description: Identifier of the service instance assigned by the MEC platform. + example: "[\"ServiceInstance123\"]" + state: + $ref: '#/components/schemas/ServiceState' + changeType: + $ref: '#/components/schemas/ServiceAvailabilityNotification.ChangeType' + description: List of links to services whose availability has changed. + ServiceAvailabilityNotification.ChangeType: + title: ServiceAvailabilityNotification.ChangeType + type: string + description: "Type of the change. Valid values:\n 1. ADDED: The service was\ + \ newly added.\n 2. REMOVED: The service was removed.\n 3. STATE_CHANGED:\ + \ Only the state of the service was changed. \n 4. ATTRIBUTES_CHANGED: At\ + \ least one attribute of the service other than state was changed. The change\ + \ may or may not include changing the state." + example: "[\"ADDED\"]" + enum: + - ADDED + - REMOVED + - STATE_CHANGED + - ATTRIBUTES_CHANGED SerializerType: - description: The enumeration represents types of serializers + title: SerializerType type: string + description: The enumeration represents types of serializers + example: "[\"JSON\"]" enum: - - JSON - - XML - - PROTOBUF3 + - JSON + - XML + - PROTOBUF3 LocalityType: - description: The scope of locality as expressed by "consumedLocalOnly" and "isLocal". If absent, defaults to MEC_HOST + title: LocalityType type: string + description: "The scope of locality as expressed by \"consumedLocalOnly\" and\ + \ \"isLocal\". If absent, defaults to MEC_HOST" + example: "[\"MEC_SYSTEM\"]" enum: - - MEC_SYSTEM - - MEC_HOST - - NFVI_POP - - ZONE - - ZONE_GROUP - - NFVI_NODE + - MEC_SYSTEM + - MEC_HOST + - NFVI_POP + - ZONE + - ZONE_GROUP + - NFVI_NODE ServiceState: - description: This enumeration defines the possible states of a service. + title: ServiceState type: string + description: This enumeration defines the possible states of a service. + example: "[\"ACTIVE\"]" enum: - - ACTIVE - - INACTIVE - - SUSPENDED - ServiceStates: - description: >- - States of the services about which to report events. If the event is - a state change, this filter represents the state after the change. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/ServiceState' - SerInstanceId: - description: >- - Identifier of the service instance assigned by the MEC platform. - type: string - readOnly: true - SerInstanceIds: - description: Identifiers of service instances about which to report events. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/SerInstanceId' - SerName: - description: >- - The name of the service. This is how the service producing MEC - application identifies the service instance it produces. - type: string - SerNames: - description: Names of services about which to report events. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/SerName' - ServiceInfoPost: - description: This type represents the general information of a MEC service. - type: object - required: - - serName - - version - - state - - serializer - oneOf: - - required: [transportId] - - required: [transportInfo] - properties: - serInstanceId: - $ref: '#/components/schemas/SerInstanceId' - serName: - $ref: '#/components/schemas/SerName' - serCategory: - $ref: '#/components/schemas/CategoryRef' - version: - description: Service version - type: string - state: - $ref: '#/components/schemas/ServiceState' - transportId: - description: >- - Identifier of the platform-provided transport to be used by the service. - Valid identifiers may be obtained using the "Transport information - query" procedure. May be present in POST requests to signal the use of a - platform-provided transport for the service, and shall be absent - otherwise. - type: string - writeOnly: true - transportInfo: - $ref: '#/components/schemas/TransportInfo' - serializer: - $ref: '#/components/schemas/SerializerType' - scopeOfLocality: - $ref: '#/components/schemas/LocalityType' - consumedLocalOnly: - description: >- - Indicate whether the service can only be consumed by the MEC applications - located in the same locality (as defined by scopeOfLocality) as this - service instance. - type: boolean - isLocal: - description: >- - Indicate whether the service is located in the same locality (as defined - by scopeOfLocality) as the consuming MEC application. - type: boolean + - ACTIVE + - INACTIVE + - SUSPENDED ServiceInfo: - description: This type represents the general information of a MEC service. - type: object + title: ServiceInfo required: - - serName - - version - - state - - transportInfo - - serializer - - _links + - serName + - serializer + - state + - transportInfo + - version + type: object properties: serInstanceId: - $ref: '#/components/schemas/SerInstanceId' + type: string + description: Identifier of the service instance assigned by the MEC platform. + example: "[\"ServiceInstance123\"]" serName: - $ref: '#/components/schemas/SerName' + type: string + description: The name of the service. This is how the service producing + MEC application identifies the service instance it produces. + example: "[\"ExampleService\"]" serCategory: $ref: '#/components/schemas/CategoryRef' version: - description: Service version type: string + description: Service version + example: "[\"ServiceVersion1\"]" state: $ref: '#/components/schemas/ServiceState' transportId: type: string - description: > - Identifier of the platform-provided transport to be used by - the service. Valid identifiers may be obtained using the - "Transport information query" procedure. May be present - in POST requests to signal the use of a platform-provided - transport for the service, and shall be absent otherwise. - See note 2. + description: "Identifier of the platform-provided transport to be used by\ + \ the service. Valid identifiers may be obtained using the \"Transport\ + \ information query\" procedure. May be present in POST requests to signal\ + \ the use of a platform-provided transport for the service, and shall\ + \ be absent otherwise. See note 2." + example: "[\"transportId1\"]" transportInfo: $ref: '#/components/schemas/TransportInfo' serializer: @@ -687,559 +1830,235 @@ components: scopeOfLocality: $ref: '#/components/schemas/LocalityType' consumedLocalOnly: - description: >- - Indicate whether the service can only be consumed by the MEC applications - located in the same locality (as defined by scopeOfLocality) as this - service instance. type: boolean + description: Indicate whether the service can only be consumed by the MEC + applications located in the same locality (as defined by scopeOfLocality) + as this service instance. + example: false isLocal: - description: >- - Indicate whether the service is located in the same locality (as defined - by scopeOfLocality) as the consuming MEC application. type: boolean + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + example: false livenessInterval: type: integer - description: - Interval (in seconds) between two consecutive "heartbeat" messages (see clause 8.2.10.3.3). - If the service-producing application supports sending "heartbeat" messages, it shall include this attribute in the registration request. In this case, the application shall either set the value of this attribute to zero or shall use this attribute to propose a non-zero positive value for the liveness interval. - If the application has provided this attribute in the request and the MEC platform requires "heartbeat" messages, the MEC platform shall return this attribute value in the HTTP responses. The MEC platform may use the value proposed in the request or may choose a different value. - If the MEC platform does not require "heartbeat" messages for this service instance it shall omit the attribute in responses. + description: "Interval (in seconds) between two consecutive \"heartbeat\"\ + \ messages (see clause 8.2.10.3.3). If the service-producing application\ + \ supports sending \"heartbeat\" messages, it shall include this attribute\ + \ in the registration request. In this case, the application shall either\ + \ set the value of this attribute to zero or shall use this attribute\ + \ to propose a non-zero positive value for the liveness interval. If the\ + \ application has provided this attribute in the request and the MEC platform\ + \ requires \"heartbeat\" messages, the MEC platform shall return this\ + \ attribute value in the HTTP responses. The MEC platform may use the\ + \ value proposed in the request or may choose a different value. If the\ + \ MEC platform does not require \"heartbeat\" messages for this service\ + \ instance it shall omit the attribute in responses." _links: - type: object - required: - - self - properties: - self: - $ref: '#/components/schemas/LinkType' - liveness: - $ref: '#/components/schemas/LinkType' + $ref: '#/components/schemas/ServiceInfo__links' + description: This type represents the general information of a MEC service. example: - serInstanceId: 'rnisInstance1' - serName: 'myRnis' - serCategory: - href: 'catItem1' - id: 'id12345' - name: 'RNI' - version: 'v2' - version: '2.2.1' - state: 'ACTIVE' + scopeOfLocality: "[\"MEC_SYSTEM\"]" transportInfo: - id: 'TransId12345' - name: 'REST' - description: 'REST API' - type: 'REST_HTTP' - protocol: 'HTTP' - version: '2.0' - endpoint: - uris: - - 'https://my.callback.com/sandboxname/rni/v2/' - serializer: 'JSON' - scopeOfLocality: 'MEC_SYSTEM' + implSpecificInfo: implSpecificInfo + protocol: "[\"HTTP\"]" + endpoint: "" + security: + oAuth2Info: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + name: "[\"REST\"]" + description: "[\"REST API\"]" + id: "[\"TransId12345\"]" + type: "[\"REST_HTTP\"]" + version: "[\"2.0\"]" + transportId: "[\"transportId1\"]" + _links: + liveness: null + self: + href: "[\"/mecSerMgmtApi/example\"]" + serializer: "[\"JSON\"]" + consumedLocalOnly: false + version: "[\"ServiceVersion1\"]" + serInstanceId: "[\"ServiceInstance123\"]" + isLocal: false + serCategory: + name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + livenessInterval: 0 + serName: "[\"ExampleService\"]" + state: "[\"ACTIVE\"]" + x-etsi-notes: "NOTE 1:\tThe service category may be included in the application\ + \ descriptor. It may be allocated by the operator or by the application developer.\n\ + NOTE 2:\tEither transportId or transportInfo but not both shall be present\ + \ in POST requests.\nNOTE 3:\tValues NFVI_POP, ZONE and NFVI_NODE are used\ + \ when the service instance is deployed as a VNF.\nNOTE 4:\tThe isLocal is\ + \ used only in service availability query response and service availability\ + \ subscription/notification messages.\nNOTE 5:\tValue ZONE_GROUP can be used\ + \ when the service instance is deployed as a VNF.\nNOTE 6:\tRegarding the\ + \ value MEC_SYSTEM, if the service is running on the same MEC system as the\ + \ MEC app, then it will be local to it." ServiceLivenessInfo: - type: object required: - - state - - timeStamp - - interval + - interval + - state + - timeStamp + type: object properties: state: $ref: '#/components/schemas/ServiceState' timeStamp: - type: object - description: The time when the last "heartbeat" message was received by MEC platform - required: - - seconds - - nanoSeconds - properties: - seconds: - type: integer - nanoSeconds: - type: integer + $ref: '#/components/schemas/ServiceLivenessInfo_timeStamp' interval: type: integer - description: The interval (in seconds) between two consecutive "heartbeat" messages (see clause 8.2.10.3.3) that MEC platform has determined. + description: The interval (in seconds) between two consecutive "heartbeat" + messages (see clause 8.2.10.3.3) that MEC platform has determined. + example: + timeStamp: + seconds: 0 + nanoSeconds: 6 + interval: 1 + state: "[\"ACTIVE\"]" ServiceLivenessUpdate: - type: object required: - - state + - state + type: object properties: state: $ref: '#/components/schemas/ServiceState' Subscription: - description: A link to the related subscription - type: object + title: Subscription required: - - subscription + - subscription + type: object properties: subscription: $ref: '#/components/schemas/LinkType' + description: A link to the related subscription TransportInfo: - description: This type represents the general information of a MEC service. - type: object + title: TransportInfo required: - - id - - name - - type - - protocol - - version - - endpoint - - security + - endpoint + - id + - name + - protocol + - security + - type + - version + type: object properties: id: - description: The identifier of this transport type: string + description: The identifier of this transport + example: "[\"TransId12345\"]" name: - description: The name of this transport type: string + description: The name of this transport + example: "[\"REST\"]" description: - description: Human-readable description of this transport type: string + description: Human-readable description of this transport + example: "[\"REST API\"]" type: $ref: '#/components/schemas/TransportType' protocol: - description: The name of the protocol used. Shall be set to HTTP for a REST API. type: string + description: The name of the protocol used. Shall be set to HTTP for a REST + API. + example: "[\"HTTP\"]" version: - description: The version of the protocol used type: string + description: The version of the protocol used + example: "[\"2.0\"]" endpoint: description: This type represents information about a transport endpoint - type: object oneOf: - - $ref: '#/components/schemas/EndPointInfoUris' - - $ref: '#/components/schemas/EndPointInfoAddresses' - - $ref: '#/components/schemas/EndPointInfoAlternative' + - $ref: '#/components/schemas/EndPointInfo.Uris' + - $ref: '#/components/schemas/EndPointInfo.Fqdn' + - $ref: '#/components/schemas/EndPointInfo.Addresses' + - $ref: '#/components/schemas/EndPointInfo.Alternative' + x-etsi-notes: "NOTE:\tExactly one of \"uris\", \"fqdn\", \"addresses\" or\ + \ \"alternative\" shall be present." security: $ref: '#/components/schemas/SecurityInfo' implSpecificInfo: + type: string description: Additional implementation specific details of the transport - type: object + description: This type represents the general information of a MEC service. + example: + implSpecificInfo: implSpecificInfo + protocol: "[\"HTTP\"]" + endpoint: "" + security: + oAuth2Info: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + name: "[\"REST\"]" + description: "[\"REST API\"]" + id: "[\"TransId12345\"]" + type: "[\"REST_HTTP\"]" + version: "[\"2.0\"]" TransportType: - description: The enumeration TransportType represents types of transports + title: TransportType type: string + description: The enumeration TransportType represents types of transports + example: "[\"REST_HTTP\"]" enum: - - REST_HTTP - - MB_TOPIC_BASED - - MB_ROUTING - - MB_PUBSUB - - RPC - - RPC_STREAMING - - WEBSOCKET - parameters: - Path.AppInstanceId: - name: appInstanceId - description: >- - Represents a MEC application instance. Note that the - appInstanceId is allocated by the MEC platform manager. - in: path - required: true - schema: - type: string - Path.SubscriptionId: - name: subscriptionId - description: >- - Represents a subscription to the notifications from the MEC - platform. - in: path - required: true - schema: - type: string - Path.ServiceId: - name: serviceId - description: Represents a MEC service instance. - in: path - required: true - schema: - type: string - Query.SerCategoryId: - name: ser_category_id - description: >- - A MEC application instance may use ser_category_id as an input - parameter to query the availability of a list of MEC service - instances in a serCategory. Either "ser_instance_id" or "ser_name" or - "ser_category_id" or none of them shall be present. - in: query - required: false - schema: - type: string - Query.SerInstanceId: - name: ser_instance_id - description: >- - A MEC application instance may use multiple ser_instance_ids as - an input parameter to query the availability of a list of MEC - service instances. Either "ser_instance_id" or "ser_name" or - "ser_category_id" or none of them shall be present. - in: query - required: false - schema: - type: array - items: - type: string - Query.SerName: - name: ser_name - description: >- - A MEC application instance may use multiple ser_names as an - input parameter to query the availability of a list of MEC - service instances. Either "ser_instance_id" or "ser_name" or - "ser_category_id" or none of them shall be present. - in: query - required: false - schema: - type: array - items: - type: string - Query.LocalityType: - name: scope_of_locality - description: >- - A MEC application instance may use scope_of_locality as an input - parameter to query the availability of a list of MEC service instances - with a certain scope of locality. - in: query - required: false - schema: - type: string - Query.IsLocal: - name: is_local - description: >- - Indicate whether the service is located in the same locality (as - defined by scopeOfLocality) as the consuming MEC application. - in: query - required: false - schema: - type: boolean - Query.ConsumedLocalOnly: - name: consumed_local_only - description: >- - Indicate whether the service can only be consumed by the MEC - applications located in the same locality (as defined by - scopeOfLocality) as this service instance. - in: query - required: false - schema: - type: boolean - responses: - ApplicationsSubscriptions200: - description: >- - Upon success, a response body containing the list of links to the - requested subscriptions is returned. - content: - application/json: - schema: - $ref: '#/components/schemas/SubscriptionLinkList' - links: - getIndividualmecSerMgmtApiSubscriptionLinkList: - $ref: '#/components/links/GetIndividualmecSerMgmtApiSubscriptionLinkList' - delIndividualmecSerMgmtApiSubscriptionLinkList: - $ref: '#/components/links/DelIndividualmecSerMgmtApiSubscriptionLinkList' - ApplicationsSubscriptions201: - description: >- - Entity body in the request contains a subscription to the MEC - service availability notifications that is to be created. - headers: - location: - description: The resource URI of the created resource - schema: - type: string - format: uri - content: - application/json: - schema: - $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' - links: - getIndividualmecSerMgmtApiSubscription: - $ref: '#/components/links/GetIndividualmecSerMgmtApiSubscription' - delIndividualmecSerMgmtApiSubscription: - $ref: '#/components/links/DelIndividualmecSerMgmtApiSubscription' - ApplicationsSubscription200: - description: >- - Upon success, a response body containing the requested subscription - is returned. - content: - application/json: - schema: - $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' - Services200: - description: >- - It is used to indicate nonspecific success. The response body - contains a representation of the resource. - content: - application/json: - schema: - type: array - minItems: 0 - items: - $ref: '#/components/schemas/ServiceInfo' - links: - getIndividualmecService: - $ref: '#/components/links/GetIndividualmecService' - putIndividualmecService: - $ref: '#/components/links/PutIndividualmecService' - Services201: - description: >- - Upon success, the HTTP response shall include a Location HTTP header - that contains the resource URI of the created resource. - headers: - location: - description: The resource URI of the created resource - schema: - type: string - format: uri - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - links: - getIndividualmecService: - $ref: '#/components/links/GetIndividualmecService' - putIndividualmecService: - $ref: '#/components/links/PutIndividualmecService' - ServicesServiceId200: - description: >- - It is used to indicate nonspecific success. The response body - contains a representation of the resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - Transports200: - description: >- - It is used to indicate nonspecific success. The response body - contains a representation of the resource. - content: - application/json: - schema: - type: array - minItems: 0 - items: - $ref: '#/components/schemas/TransportInfo' - links: - getTransportInfo: - $ref: '#/components/links/GetTransportInfo' - 400: - description: >- - Bad Request. - It is used to indicate that incorrect parameters were passed to the request. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 401: - description: >- - Unauthorized. - It is used when the client did not submit the appropriate credentials. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 403: - description: >- - Forbidden. - The operation is not allowed given the current status of the resource. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 404: - description: >- - Not Found. - It is used when a client provided a URI that cannot be mapped - to a valid resource URI. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 409: - description: >- - Conflict. - The operation cannot be executed currently, due to a conflict with - the state of the resource. Typically, this is because the application - instance resource is in NOT_INSTANTIATED state. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 412: - description: >- - Precondition Failed. - It is used when a condition has failed during conditional requests, - e.g. when using ETags to avoid write conflicts. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 414: - description: >- - It is used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 429: - description: >- - Too Many Requests. - It is used when a rate limiter has triggered. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + appInstanceId_services_body: + description: New ServiceInfo with updated "state" is included as entity body + of the request + oneOf: + - type: object + - type: object + ServiceInfo__links: + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + liveness: + $ref: '#/components/schemas/LinkType' + example: + liveness: null + self: + href: "[\"/mecSerMgmtApi/example\"]" + ServiceLivenessInfo_timeStamp: + required: + - nanoSeconds + - seconds + type: object + properties: + seconds: + type: integer + nanoSeconds: + type: integer + description: The time when the last "heartbeat" message was received by MEC + platform + example: + seconds: 0 + nanoSeconds: 6 requestBodies: - ApplicationsSubscriptions: - content: - application/json: - schema: - $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' - example: - subscriptionType: 'SerAvailabilityNotificationSubscription' - callbackReference: 'http://my.callback.com/mec_service_mgmt_ser_availabilities/some-id' - filteringCriteria: - serNames: - - 'myRnis' - states: - - 'ACTIVE' - - 'INACTIVE' - isLocal: true - description: >- - Entity body in the request contains a subscription to the MEC - application termination notifications that is to be created. - required: true - Services: - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - description: >- - New ServiceInfo with updated "state" is included as entity body of the - request - required: true - ServicesPost: - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfoPost' - example: - serName: 'myRnis' - serCategory: - href: 'catItem1' - id: 'id12345' - name: 'RNI' - version: 'v2' - version: '2.2.1' - state: 'ACTIVE' - transportInfo: - id: 'TransId12345' - name: 'REST' - description: 'REST API' - type: 'REST_HTTP' - protocol: 'HTTP' - version: '2.0' - endpoint: - uris: - - 'https://my.callback.com/sandboxname/rni/v2/' - serializer: 'JSON' - scopeOfLocality: 'MEC_SYSTEM' - description: >- - New ServiceInfo with updated "state" is included as entity body of the - request - required: true - ServicesServiceId: - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - description: >- - New ServiceInfo with updated "state" is included as entity body of the - request - required: true ServiceAvailabilityNotification: content: application/json: schema: $ref: '#/components/schemas/ServiceAvailabilityNotification' required: true - callbacks: - ServiceAvailabilityNotification: - '{$request.body#/callbackReference}': - post: - description: >- - 'Represents the service availability information that - is used in the following cases - - when the MEC platform announces the newly available - services to the authorized relevant MEC applications (e.g. - the applications that indicate the services as "optional" - or "required") that are subscribed to the corresponding - service availability notifications - - when the MEC platform notifies the authorized relevant - applications that are subscribed to the corresponding - service availability notifications about the service availability changes.' - operationId: Sm_ServiceAvailabilityNotification_POST - tags: - - callbacks - requestBody: - $ref: '#/components/requestBodies/ServiceAvailabilityNotification' - responses: - '200': - description: Expected responses from callback consumer, if it accepts the callback - links: - GetIndividualmecService: - operationId: Sm_ServicesServiceId_GET - description: The `serviceId` value returned in the response can be used as the `serviceId` parameter in `GET /services/{serviceId}` - parameters: - serviceId: '$response.body#/serviceId' - PutIndividualmecService: - operationId: Sm_ServicesServiceId_PUT - description: The `serviceId` value returned in the response can be used as the `serviceId` parameter in `PUT /services/{serviceId}` - parameters: - serviceId: '$response.body#/serviceId' - GetTransportInfo: - operationId: Sm_AppServices_POST - description: The `id` value returned in the response can be used as the `transportId` parameter in `POST /applications/{appInstanceId}/services`. The first transport is provided as the link as wildcards are not supported - parameters: - transportId: '$response.body#/0/id' - GetIndividualmecSerMgmtApiSubscription: - operationId: Sm_ApplicationsSubscription_GET - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/.*\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - DelIndividualmecSerMgmtApiSubscription: - operationId: Sm_ApplicationsSubscription_DELETE - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - GetIndividualmecSerMgmtApiSubscriptionLinkList: - operationId: Sm_ApplicationsSubscription_GET - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - DelIndividualmecSerMgmtApiSubscriptionLinkList: - operationId: Sm_ApplicationsSubscription_DELETE - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - examples: - ServiceInfo: - value: - serInstanceId: 'rnisInstance1' - serName: 'myRnis' - serCategory: - href: 'catItem1' - id: 'id12345' - name: 'RNI' - version: 'v2' - version: '2.2.1' - state: 'ACTIVE' - transportInfo: - id: 'TransId12345' - name: 'REST' - description: 'REST API' - type: 'REST_HTTP' - protocol: 'HTTP' - version: '2.0' - endpoint: - uris: - - 'https://my.callback.com/sandboxname/rni/v2/' - serializer: 'JSON' - scopeOfLocality: 'MEC_SYSTEM' -- GitLab From ae2b02fd4d2a2c69962cdc5a31851593c08b7b1c Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Fri, 29 Mar 2024 06:05:48 +0000 Subject: [PATCH 08/58] Add new Endpoints w.r.t Version 3.1.1 --- config/api/loc-serv-api.yaml | 2461 +++++++++++++++++++++++++++++----- 1 file changed, 2143 insertions(+), 318 deletions(-) diff --git a/config/api/loc-serv-api.yaml b/config/api/loc-serv-api.yaml index 11ab0e1..6861ec1 100644 --- a/config/api/loc-serv-api.yaml +++ b/config/api/loc-serv-api.yaml @@ -3,16 +3,16 @@ info: contact: url: https://forge.etsi.org/rep/mec/gs013-location-api title: ETSI GS MEC 013 - Location API - version: 2.2.1 + version: 3.1.1 description: | 'The ETSI MEC ISG MEC013 Location API described using OpenAPI. -

**Note**
MEC Sandbox supports all Location API endpoints; complete details on Location API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.02.01_60/gs_mec013v020201p.pdf)' +

**Note**
MEC Sandbox supports all Location API endpoints; complete details on Location API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/03.01.01_60/gs_mec013v030101p.pdf)' license: name: BSD-3-Clause url: 'https://forge.etsi.org/legal-matters' externalDocs: - description: ETSI MEC013 V2.2.1 Location API - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/02.02.01_60/gs_mec013v020201p.pdf' + description: ETSI MEC013 V3.1.1 Location API + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/03.01.01_60/gs_mec013v030101p.pdf' servers: - url: 'https://localhost/sandboxname/location/v2' tags: @@ -26,7 +26,7 @@ paths: description: 'UE Distance Lookup between terminals or a terminal and a location' operationId: distanceGET parameters: - - $ref: '#/components/parameters/Query.Requester' + # - $ref: '#/components/parameters/Query.Requester' - $ref: '#/components/parameters/Query.AddressMandatory' - $ref: '#/components/parameters/Query.Latitude' - $ref: '#/components/parameters/Query.Longitude' @@ -94,6 +94,8 @@ paths: summary: 'Zones information Lookup' description: 'Used to get a list of identifiers for zones authorized for use by the application.' operationId: zonesGET + parameters: + - $ref: '#/components/parameters/Query.ZoneId_' responses: '200': description: 'Successful response to zones request' @@ -158,7 +160,7 @@ paths: operationId: apGET parameters: - $ref: '#/components/parameters/Path.ZoneId' - - $ref: '#/components/parameters/Query.InterestRealm' + - $ref: '#/components/parameters/Query.AccessPointId' responses: '200': description: 'Successful response to an access point Id request' @@ -215,16 +217,24 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'queries' - /subscriptions/area/circle: + /subscriptions/area: get: tags: - - 'location' - summary: 'Retrieves all active subscriptions to area change notifications' - description: 'This operation is used for retrieving all active subscriptions to area change notifications.' - operationId: areaCircleSubListGET + - 'location' + summary: 'Retrieves information about the subscriptions for this requestor.' + description: 'The GET method is used to request information about the subscriptions for this requestor.' + operationId: areaSubListGET + parameters: + - name: subscription_type + in: query + description: Filter subscriptions by type + schema: + type: string + enum: [Event] + required: false responses: '200': - description: 'Response to retrieve area subscriptions' + description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned." content: application/json: schema: @@ -234,12 +244,31 @@ paths: properties: notificationSubscriptionList: $ref: '#/components/schemas/NotificationSubscriptionList' + example: + notificationSubscriptionList: + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/area/subscription123' + subscriptionType: 'UserAreaSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/area' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' post: tags: - - 'location' - summary: 'Creates a subscription for area change notification' - description: 'Creates a subscription to the Location Service for an area change notification.' - operationId: areaCircleSubPOST + - 'location' + summary: 'Creates subscription to area notifications.' + description: 'The POST method is used to create a new subscription to area notifications.' + operationId: areaSubPOST requestBody: description: 'Subscription to be created' required: true @@ -248,33 +277,60 @@ paths: schema: type: object properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' - example: - circleNotificationSubscription: - clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://my.callback.com/location-area-circle/some-id' - address: - - '10.100.0.4' - checkImmediate: true - enteringLeavingCriteria: 'Entering' - frequency: 1 - latitude: 43.748993 - longitude: 7.437573 - radius: 200 - trackingAccuracy: 10 + userAreaSubscription: + $ref: '#/components/schemas/UserAreaSubscription' + example: + userAreaSubscription: + subscriptionType: 'userAreaSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/area_notification/some-id' + _links: + self: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + areaDefine: + shape: 1 + points: + - latitude: -80.86302 + longitude: 41.277306 + radius: + addressList: + - acr:10.0.0.1 + - acr:10.0.0.2 + trackingAccuracy: 10.99 + expiryDeadline: + seconds: 1973507343 + nanoSeconds": 0 responses: '201': - description: 'Successful subscription' + description: 'Indicates successful resource creation, where the resource URI shall be returned in the HTTP Location header field.' content: application/json: schema: type: object properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaSubscription: + $ref: '#/components/schemas/UserAreaSubscription' + example: + - userAreaSubscription: + subscriptionType: 'userAreaSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/area_notification/some-id' + _links: + self: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + areaDefine: + shape: 1 + points: + - latitude: -80.86302 + longitude: 41.277306 + radius: + addressList: + - acr:10.0.0.1 + - acr:10.0.0.2 + trackingAccuracy: 10.99 + expiryDeadline: + seconds: 1973507343 + nanoSeconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -285,15 +341,17 @@ paths: $ref: '#/components/responses/404' '406': $ref: '#/components/responses/406' + '415': + $ref: '#/components/responses/415' '429': $ref: '#/components/responses/429' callbacks: notification: - '{$request.body#/circleNotificationSubscription.callbackReference.notifyURL}': + '{$request.body#/userAreaSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: circleNotificationPOST + operationId: areaNotificationPOST requestBody: description: 'Subscription notification' required: true @@ -302,33 +360,52 @@ paths: schema: type: object properties: - subscriptionNotification: - $ref: '#/components/schemas/SubscriptionNotification' + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' + example: + userAreaNotification: + notificationType: 'UserAreaNotification' + timestamp: + seconds: 1673507343 + nanoSeconds": 0 + address: 'acr:10.0.0.1' + userLocationEvent: 'ENTERING_AREA_EVENT' + _links: + subscription: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 responses: '204': $ref: '#/components/responses/204' x-swagger-router-controller: 'subscriptions' - /subscriptions/area/circle/{subscriptionId}: + /subscriptions/area/{subscriptionId}: get: tags: - - 'location' + - 'location' summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: areaCircleSubGET + description: 'The GET method is used to retrieve information about this subscription.' + operationId: areaSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific zone subscription is returned.' content: application/json: schema: type: object required: - - circleNotificationSubscription + - userAreaSubscription properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' + example: + - userAreaNotification: + notificationType: 'UserAreaNotification' + address: 'acr:10.0.0.1' + userLocationEvent: 'ENTERING_AREA_EVENT' + _links: + subscription: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 '400': $ref: '#/components/responses/400' '401': @@ -344,10 +421,10 @@ paths: x-swagger-router-controller: 'subscriptions' put: tags: - - 'location' + - 'location' summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: areaCircleSubPUT + description: 'The PUT method is used to update the existing subscription.' + operationId: areaSubPUT requestBody: description: 'Subscription to be modified' required: true @@ -356,36 +433,36 @@ paths: schema: type: object properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' - example: - circleNotificationSubscription: - clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://my.callback.com/location-area-circle/some-id' - address: - - '10.100.0.4' - checkImmediate: true - enteringLeavingCriteria: 'Entering' - frequency: 1 - latitude: 43.748993 - longitude: 7.437573 - radius: 200 - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/area/circle/subscription123" - trackingAccuracy: 10 + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' + example: + userAreaNotification: + notificationType: 'UserAreaNotification' + address: 'acr:10.0.0.1' + userLocationEvent: 'ENTERING_AREA_EVENT' + _links: + subscription: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned.' content: application/json: schema: type: object properties: - circleNotificationSubscription: - $ref: '#/components/schemas/CircleNotificationSubscription' + userAreaNotification: + $ref: '#/components/schemas/UserAreaNotification' + example: + userAreaNotification: + notificationType: 'UserAreaNotification' + address: 'acr:10.0.0.1' + userLocationEvent: 'ENTERING_AREA_EVENT' + _links: + subscription: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 '400': $ref: '#/components/responses/400' '401': @@ -405,10 +482,10 @@ paths: x-swagger-router-controller: 'subscriptions' delete: tags: - - 'location' + - 'location' summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: areaCircleSubDELETE + description: 'The DELETE method is used to cancel the existing subscription.' + operationId: areaSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -442,6 +519,14 @@ paths: properties: notificationSubscriptionList: $ref: '#/components/schemas/NotificationSubscriptionList' + example: + notificationSubscriptionList: + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123' + subscriptionType: 'UserDistanceSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/distance' + post: tags: - 'location' @@ -459,21 +544,20 @@ paths: distanceNotificationSubscription: $ref: '#/components/schemas/DistanceNotificationSubscription' example: - distanceNotificationSubscription: + userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://my.callback.com/location-distance/some-id' + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - '10.0.0.3' monitoredAddress: - - '10.10.0.1' - - '10.1.0.1' - checkImmediate: true - criteria: 'AllWithinDistance' + - '10.0.0.1' + - '10.0.0.2' distance: 100 - frequency: 10 - referenceAddress: - - '10.100.0.1' trackingAccuracy: 10 + criteria: 'AllWithinDistance' + checkImmediate: true + responses: '201': description: 'Successful subscription' @@ -482,8 +566,22 @@ paths: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' + example: + userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - 'acr:10.0.0.3' + monitoredAddress: + - 'acr:10.0.0.1' + - 'acr:10.0.0.2' + distance: 100 + trackingAccuracy: 10 + criteria: 'AllWithinDistance' + checkImmediate: true '400': $ref: '#/components/responses/400' '401': @@ -494,50 +592,89 @@ paths: $ref: '#/components/responses/404' '406': $ref: '#/components/responses/406' + '415': + $ref: '#/components/responses/415' + '422': + $ref: '#/components/responses/422' '429': $ref: '#/components/responses/429' + callbacks: notification: - '{$request.body#/distanceNotificationSubscription.callbackReference.notifyURL}': + '{$request.body#/userDistanceSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' - description: 'Notification from Location service, content based on subscription type' + description: 'Notification from Location service, content based user distance subscription type' operationId: distanceNotificationPOST requestBody: - description: 'Subscription notification' + description: 'User Distance Notification' required: true content: application/json: schema: type: object properties: - subscriptionNotification: - $ref: '#/components/schemas/SubscriptionNotification' + userDistanceNotification: + $ref: '#/components/schemas/UserDistanceNotification' + example: + userDistanceNotification: + notificationType: 'UserDistanceNotification' + timestamp: + seconds: 1673507343 + nanoSeconds": 0 + monitoredUsers: + - user: + address: 'acr:10.0.0.1' + accessPointId: '001010000000000000000000000000001' + zoneId: 'zone01' + timestamp: + seconds: 1673507343 + nanoSeconds": 0 + resourceURL: 'http://meAppServer.example.com/location/v3/queries/users' + distanceEvent: 'AllWithinDistance' + _links: + subscription: + href: 'http://meAppServer.example.com/location/v3/subscriptions/distance/subscription123' responses: '204': $ref: '#/components/responses/204' + x-swagger-router-controller: "subscriptions" /subscriptions/distance/{subscriptionId}: get: tags: - - 'location' - summary: 'Retrieve subscription information' - description: 'Get subscription information.' + - 'location' + summary: 'Retrieve user distance subscription information' + description: 'The GET method is used to retrieve information about user distance subscription subscription.' operationId: distanceSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific distance event subscription is returned.' content: application/json: schema: type: object required: - - distanceNotificationSubscription + - UserDistanceSubscription properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' + example: + userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - 'acr:10.0.0.3' + monitoredAddress: + - 'acr:10.0.0.1' + - 'acr:10.0.0.2' + distance: 100 + trackingAccuracy: 10 + criteria: 'AllWithinDistance' + checkImmediate: true '400': $ref: '#/components/responses/400' '401': @@ -553,9 +690,9 @@ paths: x-swagger-router-controller: 'subscriptions' put: tags: - - 'location' - summary: 'Updates a subscription information' - description: 'Updates a subscription.' + - 'location' + summary: 'Updates a user distance subscription information' + description: 'The PUT method is used to update the existing user distance subscription.' operationId: distanceSubPUT requestBody: description: 'Subscription to be modified' @@ -565,37 +702,48 @@ paths: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' - example: - distanceNotificationSubscription: - clientCorrelator: '0123' - callbackReference: - callbackData: '1234' - notifyURL: 'http://my.callback.com/location-distance/some-id' - monitoredAddress: - - '10.10.0.1' - - '10.1.0.1' - checkImmediate: true - criteria: 'AllWithinDistance' - distance: 100 - frequency: 10 - referenceAddress: - - '10.100.0.1' - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/distance/subscription123" - trackingAccuracy: 10 + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' + example: + userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - 'acr:10.0.0.3' + monitoredAddress: + - 'acr:10.0.0.1' + - 'acr:10.0.0.2' + distance: 100 + trackingAccuracy: 10 + criteria: 'AllWithinDistance' + checkImmediate: true parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned.' content: application/json: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' + example: + userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - 'acr:10.0.0.3' + monitoredAddress: + - 'acr:10.0.0.1' + - 'acr:10.0.0.2' + distance: 100 + trackingAccuracy: 10 + criteria: 'AllWithinDistance' + checkImmediate: true '400': $ref: '#/components/responses/400' '401': @@ -810,31 +958,62 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'subscriptions' - /subscriptions/userTracking: + + /subscriptions/users: get: tags: - - 'location' - summary: 'Retrieves all active subscriptions to user tracking notifications' - description: 'This operation is used for retrieving all active subscriptions to user tracking notifications.' - operationId: userTrackingSubListGET + - 'location' + summary: 'Retrieves information about the subscriptions for the requestor' + description: 'The GET method is used to request information about the subscriptions for this requestor. Upon success, the response contains entity body with the list of links to the subscriptions that are present for the requestor.' + operationId: userSubListGET + parameters: + - name: subscription_type + in: query + description: Filter subscriptions by type + schema: + type: string + enum: [event, periodic] + required: false + - name: address + in: query + description: Address of the user + schema: + type: string + required: false responses: '200': - description: "Response to retrieve user tracking subscriptions" + description: 'Response to retrieve user tracking subscriptions' content: application/json: schema: - type: object - required: - - notificationSubscriptionList - properties: - notificationSubscriptionList: - $ref: '#/components/schemas/NotificationSubscriptionList' + $ref: '#/components/schemas/NotificationSubscriptionList' + example: + - notificationSubscriptionList: + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription123' + subscriptionType: 'UserLocationEventSubscription' + - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription456' + subscriptionType: 'UserLocationPeriodicSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/users' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' post: tags: - - 'location' - summary: 'Creates a subscription for user tracking notification' - description: 'Creates a subscription to the Location Service for user tracking change notification.' - operationId: userTrackingSubPOST + - 'location' + summary: 'Create subscription to UE location.' + description: 'The POST method is used to create a new subscription to UE location notifications. Upon success, the response contains entity body describing the created subscription. ' + operationId: userSubPOST requestBody: description: 'Subscription to be created' required: true @@ -843,35 +1022,52 @@ paths: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' example: - userTrackingSubscription: - clientCorrelator: "0123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" - address: "10.100.0.1" - userEventCriteria: - - "Entering" + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' + address: '10.100.0.1' + requestTestNotification: true + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 + locationEventCriteria: + - ENTERING_AREA_EVENT + - userLocationPeriodicSubscription: + subscriptionType: 'UserLocationPeriodicSubscription' + address: "10.100.0.1" + callbackReference: "http://my.callback.com/Periodic-location-notification/some-id" + clientCorrelator: "0123" + periodicEventInfo: + reportingAmount: 25 + reportingInterval: 10 + requestTestNotification: true + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 responses: '201': - description: 'Successful subscription' + description: 'Indicates successful subscription creation.' content: application/json: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' example: - userTrackingSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" - address: "10.100.0.1" - userEventCriteria: - - "Entering" + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' + address: 'acr:10.0.0.1' + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -886,46 +1082,71 @@ paths: $ref: '#/components/responses/429' callbacks: notification: - '{$request.body#/userTrackingSubscription.callbackReference.notifyURL}': + '{$request.body#/userLocationEventSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: userTrackingNotificationPOST + operationId: userNotificationPOST requestBody: - description: 'Subscription notification' + description: 'User LocationEvent Notification' required: true content: application/json: schema: type: object properties: - zonalPresenceNotification: - $ref: '#/components/schemas/ZonalPresenceNotification' + userLocationEventNotification: + $ref: '#/components/schemas/UserLocationEventNotification' + userLocationPeriodicNotification: + $ref: '#/components/schemas/UserLocationPeriodicNotification' + example: + - userLocationEventNotification: + notificationType: 'UserLocationEventNotification' + timestamp: + seconds: 1673507343 + nanoseconds: 0 + address: 'acr:10.0.0.1' + userLocationEvent: 'ENTERING_AREA_EVENT' + zoneId: 'zone01' + accessPointId: '001010000000000000000000000000001' + _links: + subscription: + href: "http://meAppServer.example.com/location/v3/subscriptions/user/subscription123" responses: '204': $ref: '#/components/responses/204' x-swagger-router-controller: 'subscriptions' - /subscriptions/userTracking/{subscriptionId}: + + /subscriptions/users/{subscriptionId}: get: tags: - - 'location' + - 'location' summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: userTrackingSubGET + description: 'The GET method is used to retrieve information about this subscription. Upon success, the response contains entity body with the data type describing the subscription. ' + operationId: userSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific Location event subscription is returned.' content: application/json: schema: type: object required: - - userTrackingSubscription + - UserLocationEventSubscription properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' + example: + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' + address: 'acr:10.0.0.1' + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -941,10 +1162,10 @@ paths: x-swagger-router-controller: 'subscriptions' put: tags: - - 'location' + - 'location' summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: userTrackingSubPUT + description: 'The PUT method is used to update the existing subscription. PUT method in this case has "replace" semantics. Upon successful operation, the target resource is updated with new Data Type received within the message body of the PUT request.' + operationId: userSubPUT requestBody: description: 'Subscription to be modified' required: true @@ -953,38 +1174,61 @@ paths: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' example: - userTrackingSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" + - userLocationEventSubscription: + links: + self: + href: http://[hostIP]/sbox-xyz123/location/v2/subscriptions/users/subscription123" address: "10.100.0.1" - userEventCriteria: - - "Entering" + callbackReference: "http://my.callback.com/user-location-notification/some-id" + locationEventCriteria: + - "ENTERING_AREA_EVENT" + requestTestNotification: true + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 + subscriptionType: "userLocationEventSubscription" + + - userLocationPeriodicSubscription: + links: + self: + href: http://[hostIP]/sbox-xyz123/location/v2/subscriptions/users/subscription123" + subscriptionType: 'UserLocationPeriodicSubscription' + address: "10.100.0.1" + callbackReference: "http://my.callback.com/Periodic-location-notification/some-id" + clientCorrelator: "0123" + periodicEventInfo: + reportingAmount: 25 + reportingInterval: 10 + requestTestNotification: true + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned. ' content: application/json: schema: type: object properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' - example: - userTrackingSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" - address: "10.100.0.1" - userEventCriteria: - - "Entering" + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' + example: + - userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' + address: 'acr:10.0.0.1' + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -1002,12 +1246,13 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'subscriptions' + delete: tags: - - 'location' - summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: userTrackingSubDELETE + - 'location' + summary: 'Delete a subscription' + description: 'The DELETE method is used to cancel the existing subscription. Cancellation can be made by deleting the resource that represents existing subscription.' + operationId: userSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -1022,16 +1267,17 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'subscriptions' - /subscriptions/zonalTraffic: + + /subscriptions/userTracking: get: tags: - 'location' - summary: 'Retrieves all active subscriptions to zonal traffic notifications' - description: 'This operation is used for retrieving all active subscriptions to zonal traffic change notifications.' - operationId: zonalTrafficSubListGET + summary: 'Retrieves all active subscriptions to user tracking notifications' + description: 'This operation is used for retrieving all active subscriptions to user tracking notifications.' + operationId: userTrackingSubListGET responses: '200': - description: 'Response to retrieve zonal traffic subscriptions' + description: "Response to retrieve user tracking subscriptions" content: application/json: schema: @@ -1044,9 +1290,9 @@ paths: post: tags: - 'location' - summary: 'Creates a subscription for zonal traffic notification' - description: 'Creates a subscription to the Location Service for zonal traffic change notification.' - operationId: zonalTrafficSubPOST + summary: 'Creates a subscription for user tracking notification' + description: 'Creates a subscription to the Location Service for user tracking change notification.' + operationId: userTrackingSubPOST requestBody: description: 'Subscription to be created' required: true @@ -1055,14 +1301,14 @@ paths: schema: type: object properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + userTrackingSubscription: + $ref: '#/components/schemas/UserTrackingSubscription' example: - zonalTrafficSubscription: + userTrackingSubscription: clientCorrelator: "0123" callbackReference: - notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" - zoneId: "zone01" + notifyURL: "http://my.callback.com/location-user-tracking/some-id" + address: "10.100.0.1" userEventCriteria: - "Entering" responses: @@ -1073,15 +1319,15 @@ paths: schema: type: object properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + userTrackingSubscription: + $ref: '#/components/schemas/UserTrackingSubscription' example: - zonalTrafficSubscription: + userTrackingSubscription: clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zonalTraffic/subscription123" + resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" callbackReference: - notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" - zoneId: "zone01" + notifyURL: "http://my.callback.com/location-user-tracking/some-id" + address: "10.100.0.1" userEventCriteria: - "Entering" '400': @@ -1098,11 +1344,11 @@ paths: $ref: '#/components/responses/429' callbacks: notification: - '{$request.body#/zonalTrafficSubscription.callbackReference.notifyURL}': + '{$request.body#/userTrackingSubscription.callbackReference.notifyURL}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: zonalTrafficNotificationPOST + operationId: userTrackingNotificationPOST requestBody: description: 'Subscription notification' required: true @@ -1117,13 +1363,13 @@ paths: '204': $ref: '#/components/responses/204' x-swagger-router-controller: 'subscriptions' - /subscriptions/zonalTraffic/{subscriptionId}: + /subscriptions/userTracking/{subscriptionId}: get: tags: - 'location' summary: 'Retrieve subscription information' description: 'Get subscription information.' - operationId: zonalTrafficSubGET + operationId: userTrackingSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -1134,10 +1380,10 @@ paths: schema: type: object required: - - zonalTrafficSubscription + - userTrackingSubscription properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + userTrackingSubscription: + $ref: '#/components/schemas/UserTrackingSubscription' '400': $ref: '#/components/responses/400' '401': @@ -1150,13 +1396,13 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - x-swagger-router-controller: "subscriptions" + x-swagger-router-controller: 'subscriptions' put: tags: - 'location' summary: 'Updates a subscription information' description: 'Updates a subscription.' - operationId: zonalTrafficSubPUT + operationId: userTrackingSubPUT requestBody: description: 'Subscription to be modified' required: true @@ -1165,10 +1411,507 @@ paths: schema: type: object properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' + userTrackingSubscription: + $ref: '#/components/schemas/UserTrackingSubscription' example: - zonalTrafficSubscription: + userTrackingSubscription: + clientCorrelator: "0123" + resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" + callbackReference: + notifyURL: "http://my.callback.com/location-user-tracking/some-id" + address: "10.100.0.1" + userEventCriteria: + - "Entering" + parameters: + - $ref: '#/components/parameters/Path.SubscrId' + responses: + '200': + description: 'Successful subscription to response to subscription notifications' + content: + application/json: + schema: + type: object + properties: + userTrackingSubscription: + $ref: '#/components/schemas/UserTrackingSubscription' + example: + userTrackingSubscription: + clientCorrelator: "0123" + resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" + callbackReference: + notifyURL: "http://my.callback.com/location-user-tracking/some-id" + address: "10.100.0.1" + userEventCriteria: + - "Entering" + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '412': + $ref: '#/components/responses/412' + '422': + $ref: '#/components/responses/422' + '429': + $ref: '#/components/responses/429' + x-swagger-router-controller: 'subscriptions' + delete: + tags: + - 'location' + summary: 'Cancel a subscription' + description: 'Method to delete a subscription.' + operationId: userTrackingSubDELETE + parameters: + - $ref: '#/components/parameters/Path.SubscrId' + responses: + '204': + $ref: '#/components/responses/204' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + x-swagger-router-controller: 'subscriptions' + + /subscriptions/zones: + get: + tags: + - 'location' + summary: 'Retrieves all active subscriptions to zone notifications' + description: 'This operation is used for retrieving all active subscriptions to zone notifications.' + operationId: zoneSubListGET + parameters: + - name: subscription_type + in: query + description: Filter subscriptions by type + schema: + type: string + enum: [event, status] + required: false + - name: zoneId + in: query + description: The identity of the zone. + schema: + type: string + required: false + responses: + '200': + description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned." + content: + application/json: + schema: + type: object + required: + - notificationSubscriptionList + properties: + notificationSubscriptionList: + $ref: '#/components/schemas/NotificationSubscriptionList' + example: + - notificationSubscriptionList: + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/zones/subscription123' + subscriptionType: 'ZoneLocationEventSubscription' + - href: 'http://meAppServer.example.com/location/v2/subscriptions/zones/subscription456' + subscriptionType: 'ZoneStatusSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/zones' + post: + tags: + - 'location' + summary: 'Creates a subscription to zone notifications' + description: 'The POST method is used to create a new subscription to zone notifications.' + operationId: zoneSubPOST + requestBody: + description: 'Subscription to be created' + required: true + content: + application/json: + schema: + type: object + properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' + example: + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: + notifyURL: 'http://my.callback.com/location_notifications/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 + responses: + '201': + description: 'Indicates successful resource creation' + content: + application/json: + schema: + type: object + properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' + example: + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: + notifyURL: 'http://my.callback.com/location_notifications/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '415': + $ref: '#/components/responses/415' + '422': + $ref: '#/components/responses/422' + '429': + $ref: '#/components/responses/429' + callbacks: + notification: + '{$request.body#/zoneLocationEventSubscription.callbackReference}': + post: + summary: 'Callback POST used to send a notification' + description: 'Notification from Location service, content based on subscription type' + operationId: zoneNotificationPOST + requestBody: + description: 'Subscription notification' + required: true + content: + application/json: + schema: + type: object + properties: + zoneLocationEventNotification: + $ref: '#/components/schemas/ZoneLocationEventNotification' + zoneStatusNotification: + $ref: '#/components/schemas/ZoneStatusNotification' + example: + - zoneLocationEventNotification: + notificationType: 'ZoneLocationEventNotification' + timestamp: + seconds: 1673507343 + nanoseconds: 0 + address: 'acr:10.0.0.1' + zoneId: 'zone01' + _links: + subscription: + href: "http://meAppServer.example.com/location/v3/subscriptions/zone/subscription123" + responses: + '204': + $ref: '#/components/responses/204' + x-swagger-router-controller: 'subscriptions' + + /subscriptions/zones/{subscriptionId}: + get: + tags: + - 'location' + summary: 'Retrieve zone subscription information' + description: 'The GET method is used to retrieve information about zone subscription. ' + operationId: zoneSubGET + parameters: + - $ref: '#/components/parameters/Path.SubscrId' + responses: + '200': + description: 'Upon success, a response body containing data type describing the specific zone subscription is returned.' + content: + application/json: + schema: + type: object + required: + - zoneLocationEventSubscription + - zoneStatusSubscription + properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' + example: + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' + x-swagger-router-controller: 'subscriptions' + put: + tags: + - 'location' + summary: 'Updates a zone subscription information' + description: 'The PUT method is used to update the existing zone subscription.' + operationId: zoneSubPUT + requestBody: + description: 'Subscription to be modified' + required: true + content: + application/json: + schema: + type: object + properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' + example: + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 + parameters: + - $ref: '#/components/parameters/Path.SubscrId' + responses: + '200': + description: 'Upon success, a response body containing data type describing the updated subscription is returned.' + content: + application/json: + schema: + type: object + properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + zoneStatusSubscription: + $ref: '#/components/schemas/ZoneStatusSubscription' + example: + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '412': + $ref: '#/components/responses/412' + '422': + $ref: '#/components/responses/422' + '429': + $ref: '#/components/responses/429' + x-swagger-router-controller: 'subscriptions' + delete: + tags: + - 'location' + summary: 'Cancel a zone subscription' + description: 'The DELETE method is used to cancel the existing zone subscription.' + operationId: zoneSubDELETE + parameters: + - $ref: '#/components/parameters/Path.SubscrId' + responses: + '204': + $ref: '#/components/responses/204' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '429': + $ref: '#/components/responses/429' + x-swagger-router-controller: 'subscriptions' + + + + /subscriptions/zonalTraffic: + get: + tags: + - 'location' + summary: 'Retrieves all active subscriptions to zonal traffic notifications' + description: 'This operation is used for retrieving all active subscriptions to zonal traffic change notifications.' + operationId: zonalTrafficSubListGET + responses: + '200': + description: 'Response to retrieve zonal traffic subscriptions' + content: + application/json: + schema: + type: object + required: + - notificationSubscriptionList + properties: + notificationSubscriptionList: + $ref: '#/components/schemas/NotificationSubscriptionList' + post: + tags: + - 'location' + summary: 'Creates a subscription for zonal traffic notification' + description: 'Creates a subscription to the Location Service for zonal traffic change notification.' + operationId: zonalTrafficSubPOST + requestBody: + description: 'Subscription to be created' + required: true + content: + application/json: + schema: + type: object + properties: + zonalTrafficSubscription: + $ref: '#/components/schemas/ZonalTrafficSubscription' + example: + zonalTrafficSubscription: + clientCorrelator: "0123" + callbackReference: + notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" + zoneId: "zone01" + userEventCriteria: + - "Entering" + responses: + '201': + description: 'Successful subscription' + content: + application/json: + schema: + type: object + properties: + zonalTrafficSubscription: + $ref: '#/components/schemas/ZonalTrafficSubscription' + example: + zonalTrafficSubscription: + clientCorrelator: "0123" + resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zonalTraffic/subscription123" + callbackReference: + notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" + zoneId: "zone01" + userEventCriteria: + - "Entering" + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' + callbacks: + notification: + '{$request.body#/zonalTrafficSubscription.callbackReference.notifyURL}': + post: + summary: 'Callback POST used to send a notification' + description: 'Notification from Location service, content based on subscription type' + operationId: zonalTrafficNotificationPOST + requestBody: + description: 'Subscription notification' + required: true + content: + application/json: + schema: + type: object + properties: + zonalPresenceNotification: + $ref: '#/components/schemas/ZonalPresenceNotification' + responses: + '204': + $ref: '#/components/responses/204' + x-swagger-router-controller: 'subscriptions' + /subscriptions/zonalTraffic/{subscriptionId}: + get: + tags: + - 'location' + summary: 'Retrieve subscription information' + description: 'Get subscription information.' + operationId: zonalTrafficSubGET + parameters: + - $ref: '#/components/parameters/Path.SubscrId' + responses: + '200': + description: 'Subscription information regarding subscription notifications' + content: + application/json: + schema: + type: object + required: + - zonalTrafficSubscription + properties: + zonalTrafficSubscription: + $ref: '#/components/schemas/ZonalTrafficSubscription' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' + x-swagger-router-controller: "subscriptions" + put: + tags: + - 'location' + summary: 'Updates a subscription information' + description: 'Updates a subscription.' + operationId: zonalTrafficSubPUT + requestBody: + description: 'Subscription to be modified' + required: true + content: + application/json: + schema: + type: object + properties: + zonalTrafficSubscription: + $ref: '#/components/schemas/ZonalTrafficSubscription' + example: + zonalTrafficSubscription: clientCorrelator: "0123" resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zonalTraffic/subscription123" callbackReference: @@ -1542,6 +2285,16 @@ components: type: string format: uri x-exportParamName: SubscriptionId + Query.ZoneId: + name: zoneId + in: query + description: Identifier of zone + required: false + schema: + type: array + items: + type: string + x-exportParamName: ZoneId Path.ZoneId: name: zoneId in: path @@ -1606,15 +2359,15 @@ components: type: number format: float x-exportParamName: Longitude - Query.Requester: - name: requester - in: query - description: Entity that is requesting the information - required: false - schema: - type: string - x-exportParamName: Requester - Query.ZoneId: + # Query.Requester: + # name: requester + # in: query + # description: Entity that is requesting the information + # required: false + # schema: + # type: string + # x-exportParamName: Requester + Query.ZoneId_: name: zoneId in: query description: Identifier of zone @@ -1639,74 +2392,376 @@ components: description: Interest realm of access point. type: string x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string + x-etsi-mec-origin-type: string + locationInfo: + $ref: '#/components/schemas/LocationInfo' + numberOfUsers: + description: Number of users currently on the access point. + type: integer + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: integer + operationStatus: + $ref: '#/components/schemas/OperationStatus' + resourceURL: + description: Self referring URL + type: string + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: anyURI + timezone: + description: Time zone of access point. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: dateTimeStamp + required: + - accessPointId + - connectionType + - operationStatus + - numberOfUsers + - resourceURL + type: object + AccessPointList: + description: A type containing list of access points. + properties: + accessPoint: + description: Collection of the access point information list. + items: + $ref: '#/components/schemas/AccessPointInfo' + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: AccessPointInfo + resourceURL: + description: Self referring URL + type: string + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: anyURI + zoneId: + description: Identifier of zone + type: string + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: string + required: + - zoneId + - resourceURL + type: object + CallbackReference: + properties: + callbackData: + description: Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: string + notificationFormat: + $ref: '#/components/schemas/NotificationFormat' + notifyURL: + description: Notify Callback URL + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: anyURI + required: + - notifyURL + type: object + + UserLocationPeriodicSubscription: + properties: + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI) to monitor." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + description': The expiration time of the subscription determined by the UE Location Subscribe Service. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + periodicEventInfo: + description': Information for periodic event reporting. See note 3. + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': PeriodicEventInfo + $ref: '#/components/schemas/PeriodicEventInfo' + requestTestNotification: + description: Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS MEC 009 [4], clause 6.12a. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserLocationPeriodicSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + websockNotifConfig: + description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + required: + - subscriptionType + - address + - periodicEventInfo + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [17], clause 6.1.6.2.24." + x-etsi-ref: 6.3.5 + + UserLocationPeriodicNotification: + properties: + # _links: + # $ref: '#/components/schemas/_links' + accessPointId: + description: "The identity of the access point that the user is currently within. \nSee note 2." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + civicInfo: + description': Contextual information of a user location (e.g. aisle, floor, room number, etc.). See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': CivicAddress + $ref: '#/components/schemas/CivicAddress' + isFinalNotification: + description: Shall be set to true if it is a final notification. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + locationInfo: + description': The geographical coordinates where the user is. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': LocationInfo + $ref: '#/components/schemas/LocationInfo' + notificationType: + description: Shall be set to "UserLocationPeriodicNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + relativeLocationInfo: + description': The relative location in a reference system. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': RelativeLocationInfo + $ref: '#/components/schemas/RelativeLocationInfo' + result: + description': The result of Localization. See note 3. + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': NotificationResult + $ref: '#/components/schemas/NotificationResult' + timeStamp: + description': Time stamp. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + zoneId: + description: "The identity of the zone that the user is currently within. \nSee note 2." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + required: + - notificationType + - result + # - _links + type: object + x-etsi-notes: "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tIf the result is SUCCESS, at least one of locationInfo, civicInfo and relativeLocationInfo shall be present." + x-etsi-ref: 6.4.5 + + + UserLocationEventNotification: + properties: + accessPointId: + description: "The identity of the access point.\nFor the events of \"ENTERING_AREA_EVENT\", it indicates the access point that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it indicates the access point that the user used to be within.\nSee note 2." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + civicInfo: + description': Contextual information of a user location (e.g. aisle, floor, room number, etc.). See note 1. See note 3. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': CivicAddress + $ref: '#/components/schemas/CivicAddress' locationInfo: + description': The geographical coordinates where the user is. See note 3. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': LocationInfo $ref: '#/components/schemas/LocationInfo' - numberOfUsers: - description: Number of users currently on the access point. - type: integer - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: integer - operationStatus: - $ref: '#/components/schemas/OperationStatus' - resourceURL: - description: Self referring URL + notificationType: + description: Shall be set to "UserLocationEventNotification". type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: anyURI - timezone: - description: Time zone of access point. + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + relativeLocationInfo: + description': The relative location in a reference system. See note 3. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': RelativeLocationInfo + $ref: '#/components/schemas/RelativeLocationInfo' + timeStamp: + description': Time stamp. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + userLocationEvent: + description': The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT", "LEAVING_AREA_EVENT".. + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': LocationEventType + $ref: '#/components/schemas/LocationEventType' + zoneId: + description: "The identity of the zone. \nFor the events of \"ENTERING_AREA_EVENT\", it is the zone that the user is currently within. \nFor the event of \"LEAVING_AREA_EVENT\", it is the zone that the user used to be within.\nSee note 2." type: string x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: dateTimeStamp + x-etsi-mec-origin-type: String required: - - accessPointId - - connectionType - - operationStatus - - numberOfUsers - - resourceURL + - notificationType + - userLocationEvent + - _links type: object - AccessPointList: - description: A type containing list of access points. + x-etsi-notes: "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserLocationEventSubscription." + x-etsi-ref: 6.4.4 + + ZoneLocationEventSubscription: properties: - accessPoint: - description: Collection of the access point information list. + # _links: + # $ref: '#/components/schemas/_links' + addressList: + description: List of the users to be monitored. If not present, all the users need to be monitored. items: - $ref: '#/components/schemas/AccessPointInfo' + type: string + minItems: 0 type: array x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: AccessPointInfo - resourceURL: - description: Self referring URL + x-etsi-mec-origin-type: Array(Uri) + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: anyURI + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + description': The expiration time of the subscription determined by the Zone Location Event Service. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + locationEventCriteria: + description: 'List of user event values to generate notifications for. ' + items: + $ref: '#/components/schemas/LocationEventType' + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(LocationEventType) + reportingCtrl: + description': Provides parameters that ctrl the reporting. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "ZoneLocationEventSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + websockNotifConfig: + description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' zoneId: - description: Identifier of zone + description: Identifier of zone (e.g. zone001) to monitor. type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String required: + - subscriptionType - zoneId - - resourceURL type: object - CallbackReference: + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." + x-etsi-ref: 6.3.6 + + + + UserLocationEventSubscription: properties: - callbackData: - description: Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes. + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI) to monitor." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri type: string x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - notificationFormat: - $ref: '#/components/schemas/NotificationFormat' - notifyURL: - description: Notify Callback URL + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + description': The expiration time of the subscription determined by the UE Location Subscribe Service. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + locationEventCriteria: + description: 'List of user event values to generate notifications for (these apply to address specified). ' + items: + $ref: '#/components/schemas/LocationEventType' + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(LocationEventType) + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserLocationEventSubscription". type: string x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: anyURI + x-etsi-mec-origin-type: String + userEventPara: + description': Requirements for user event reporting. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': UserEventPara + $ref: '#/components/schemas/UserEventPara' + websockNotifConfig: + description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' required: - - notifyURL + - subscriptionType + - address type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." + x-etsi-ref: 6.3.4 + CircleNotificationSubscription: description: A type containing data for notifications, when the area is defined as a circle. properties: @@ -1819,6 +2874,151 @@ components: - AllBeyondDistance - AnyBeyondDistance type: string + _links: + description: Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests. + properties: + self: + $ref: '#/components/schemas/LinkType' + required: + - self + type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure (inlined) + LinkType: + properties: + href: + description: URI referring to a resource. + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + required: + - href + type: object + x-etsi-ref: 6.7.2 + UserDistanceNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + distanceEvent: + description: Indicates the distance event triggering the notification. See note. + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': DistanceCriteria + $ref: '#/components/schemas/DistanceCriteria' + monitoredUsers: + description: Indicates the location information related to monitored users. + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': UserList + $ref: '#/components/schemas/UserList' + notificationType: + description: Shall be set to "UserDistanceNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + timeStamp: + description: Time stamp. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + required: + - notificationType + - monitoredUsers + - distanceEvent + - _links + type: object + x-etsi-notes: "NOTE:\tAs specified in [6], clause 5.2.3.2." + x-etsi-ref: 6.4.9 + + UserDistanceSubscription: + properties: + _links: + $ref: '#/components/schemas/_links' + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + checkImmediate: + description: Check location immediately after establishing notification. + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': Bool + type: boolean + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + criteria: + description': "Indicates whether the notification should occur when the geographical relationship between monitored and referenced users\u2019 changes. See note 3." + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': DistanceCriteria + $ref: '#/components/schemas/DistanceCriteria' + distance: + description: Distance between users that shall be monitored. The unit is meter. + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + expiryDeadline: + description': The expiration time of the subscription determined by the UE Distance Subscribe Service. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + monitoredAddress: + description: "Contains addresses of users to monitor (e.g., \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI). Reference to a group could be provided here if supported by implementation.\nIf the ReferenceAddress is specified, then the distance between each monitored user and reference user(s) will be monitored.\nIf the ReferenceAddress is not present, then the distance between each pair of the monitored users will be monitored. Note that in that case there shall be at least two addresses specified here." + items: + type: string + minItems: 1 + type: array + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Array(Uri) + referenceAddress: + description: "If specified, indicates address of each user that will be used as reference users from which the distances towards monitored users indicated in the Addresses will be monitored (e.g., \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI). Reference to a group could be provided here if supported by implementation." + items: + type: string + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(Uri) + reportingCtrl: + description': Provides parameters that ctrl the reporting. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserDistanceSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + trackingAccuracy: + description: Number of meters of acceptable error in tracking distance. + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + websockNotifConfig: + description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + required: + - subscriptionType + - monitoredAddress + - distance + - trackingAccuracy + - criteria + - checkImmediate + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [6], clause 5.2.3.2." + x-etsi-ref: 6.3.9 + + DistanceNotificationSubscription: description: A type containing data for distance subscription, with reference to other devices. properties: @@ -1915,13 +3115,189 @@ components: description: URI format: anyURI type: string - rel: - description: Describes the relationship between the URI and the resource. + rel: + description: Describes the relationship between the URI and the resource. + type: string + required: + - rel + - href + type: object + CivicAddress: + description: Indicates a Civic address + type: object + required: + - country + properties: + country: + description: The two-letter ISO 3166 country code in capital ASCII letters, e.g., DE or US + type: string + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + A1: + description: National subdivisions (state, canton, region, province, prefecture) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A2: + description: County, parish, gun (JP), district (IN) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A3: + description: City, township, shi (JP) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A4: + description: City division, borough, city district, ward, chou (JP) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A5: + description: Neighbourhood, block + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + A6: + description: Group of streets below the neighbourhood level + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PRD: + description: Leading street direction + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + POD: + description: Trailing street suffix + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + STS: + description: Street suffix or type + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + HNO: + description: House number + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + HNS: + description: House number suffix + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + LMK: + description: Landmark or vanity address + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + LOC: + description: Additional location information + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + NAM: + description: Name (residence and office occupant) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PC: + description: Postal/zip code + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + BLD: + description: Building (structure) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + UNIT: + description: Unit (apartment, suite) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + FLR: + description: Floor + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + ROOM: + description: Room + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PLC: + description: Place-type + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PCN: + description: Postal community name + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + POBOX: + description: Post office box (P.O. box) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + ADDCODE: + description: Additional code + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + SEAT: + description: Seat (desk, cubicle, workstation) + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RD: + description: Primary road or street + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RDSEC: + description: Road clause + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RDBR: + description: Road branch type: string - required: - - rel - - href - type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + RDSUBBR: + description: Road sub-branch + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + PRM: + description: Road pre-modifier + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + POM: + description: Road post-modifier + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + usageRules: + description: When present, this IE shall carry the value of "usagerules" Element of the PIDL-LO XML document, with UTF-8 encoding. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + method: + description: When present, this IE shall contain the method token, carried by the "method" Element of the PIDLLO XML document. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + providedBy: + description: When present, this IE shall carry the value of "provided-by" Element of the PIDL-LO XML document, with UTF-8 encoding. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String LocationInfo: properties: accuracy: @@ -2051,8 +3427,202 @@ components: - XML - JSON type: string + Point: + properties: + latitude: + description: "Location latitude, expressed in the range -90\xB0 to +90\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + longitude: + description: "Location longitude, expressed in the range -180\xB0 to +180\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + required: + - latitude + - longitude + type: object + x-etsi-ref: 6.5.8 + + AreaInfo: + properties: + points: + description: Shall include one point if the shape is CIRCLE. Shall include 3-15 points if the shape is POLYGON. + items: + $ref: '#/components/schemas/Point' + minItems: 1 + type: array + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Array(Point) + radius: + description: Shall be present if the shape is CIRCLE. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + shape: + description: 'The shape of the area monitored: + 1 = CIRCLE. + 2 = POLYGON' + enum: + - 1 + - 2 + type: integer + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Enum(inlined) + required: + - shape + - points + type: object + x-etsi-ref: 6.5.7 + UserAreaNotification: + properties: + _links: + $ref: '#/components/schemas/_links' + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + civicInfo: + description': Contextual information of a user location (e.g. aisle, floor, room number, etc.). See note 1. See note 2. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': CivicAddress + $ref: '#/components/schemas/CivicAddress' + locationInfo: + description': The geographical coordinates where the user is. See note 2. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': LocationInfo + $ref: '#/components/schemas/LocationInfo' + notificationType: + description: Shall be set to "UserAreaNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + relativeLocationInfo: + description': The relative location in a reference system. See note 2. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': RelativeLocationInfo + $ref: '#/components/schemas/RelativeLocationInfo' + timeStamp: + description': Time stamp. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + userLocationEvent: + description: The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT", "LEAVING_AREA_EVENT". + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': LocationEventType + $ref: '#/components/schemas/LocationEventType' + required: + - notificationType + - address + - userLocationEvent + - _links + type: object + x-etsi-notes: "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAt least one of these attributes shall be present only when reportingLocationReq is set to TRUE in the UserAreaSubscription." + x-etsi-ref: 6.4.8 + + UserAreaSubscription: + properties: + _links: + $ref: '#/components/schemas/_links' + addressList: + description: 'List of the users to be monitored. ' + items: + type: string + minItems: 1 + type: array + x-etsi-mec-cardinality: 1..N + x-etsi-mec-origin-type: Array(Uri) + areaDefine: + description: The parameters describing the area to subscribe. + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': AreaInfo + $ref: '#/components/schemas/AreaInfo' + callbackReference: + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + clientCorrelator: + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + expiryDeadline: + description: The expiration time of the subscription determined by the UE Area Subscribe Service. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + locationEventCriteria: + description: 'List of user event values to generate notifications for (these apply to address specified). ' + items: + $ref: '#/components/schemas/LocationEventType' + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(LocationEventType) + reportingCtrl: + description: Provides parameters that ctrl the reporting. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + reportingLocationReq: + description: This IE shall be set to true if a location estimate is required for each event report. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: boolean + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "UserAreaSubscription". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + trackingAccuracy: + description: Number of meters of acceptable error. + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + websockNotifConfig: + description: Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' + required: + - subscriptionType + - areaDefine + - addressList + - trackingAccuracy + type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." + x-etsi-ref: 6.3.8 + + + NotificationSubscriptionList: properties: + zoneStatusSubscription: + items: + $ref: '#/components/schemas/ZoneStatusSubscription' + ZoneLocationEventSubscription: + items: + $ref: '#/components/schemas/ZoneLocationEventSubscription' + userLocationEventSubscription: + items: + $ref: '#/components/schemas/UserLocationEventSubscription' + UserLocationPeriodicSubscription: + items: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' circleNotificationSubscription: description: Collection of CircleNotificationSubscription elements, see note 2. items: @@ -2099,14 +3669,6 @@ components: type: array x-etsi-mec-cardinality: 0.. N x-etsi-mec-origin-type: ZonalTrafficSubscription - zoneStatusSubscription: - description: Collection of ZoneStatusSubscription elements, see note 1. - items: - $ref: '#/components/schemas/ZoneStatusSubscription' - minItems: 0 - type: array - x-etsi-mec-cardinality: 0.. N - x-etsi-mec-origin-type: ZoneStatusSubscription required: - resourceURL type: object @@ -2307,6 +3869,190 @@ components: - address - locationRetrievalStatus type: object + + UserEventPara: + properties: + accessPointList: + description: One or more access points forming a monitoring area that could be any shape. See note 1. + items: + type: string + minItems: 0 + type: array + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Array(String) + occurrenceInfo: + description': One time only report indication. See note 2. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': OccurrenceInfo + $ref: '#/components/schemas/OccurrenceInfo' + reportingLocationReq: + description: This IE shall be set to true if a location estimate is required for each event report. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: boolean + zoneId: + description: "Identifier of zone (e.g. zone001) to monitor. See note\_1." + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + type: object + x-etsi-notes: "NOTE 1:\tOnly one of accessPointList and zoneId may be present.\nNOTE 2:\tAs specified in [17], clause 6.1.6.3.16." + x-etsi-ref: 6.5.5 + OccurrenceInfo: + description: The enumeration OccurrenceInfo indicates whether event reporting is one time. + enum: + - ONE_TIME_EVENT + - MULTIPLE_TIME_EVENT + type: string + + WebsockNotifConfig: + properties: + requestWebsocketUri: + description: Set to true by the service consumer to indicate that Websocket delivery is requested. + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + websocketUri: + description: Set by location server to indicate to the service consumer the Websocket URI to be used for delivering notifications. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + type: object + x-etsi-ref: 6.5.4 + + PeriodicEventInfo: + description: "NOTE: reportingAmount x reportingInterval shall not exceed 8639999 (99 days, 23 hours, 59 minutes and 59 seconds) + for compatibility with OMA MLP and RLP." + type: object + required: + - reportingAmount + - reportingInterval + properties: + reportingAmount: + description: Number of event reports + type: number + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: ReportingAmount + reportingInterval: + description: Interval of event reports + type: number + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: reportingInterval + + RelativeLocationInfo: + properties: + X: + description: 'Indicates the value (in the unit of meters) on x-axis of the relative location in the Cartesian system. + Positive value represents easting from origin.' + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + Y: + description: 'Indicates the value (in the unit of meters) on y-axis of the relative location in the Cartesian system. + Positive value represents northing from origin.' + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + Z: + description: 'Indicates the value (in the unit of meters) on z-axis of the relative location in the Cartesian system for a 3DPoint. + Positive value represents height above origin.' + format: float + type: number + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Float + mapInfo: + $ref: '#/components/schemas/MapInfo' + required: + - mapInfo + - 'X' + - 'Y' + type: object + x-etsi-ref: 6.2.3 + + + MapInfo: + properties: + ancillaryMapInfo: + description: Ancillary map information may be used to convert coordinates between different coordinate systems. + type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Not_specified + mapId: + description: 'Indicates the ID of the map. ' + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + origin: + $ref: '#/components/schemas/Origin' + required: + - mapId + type: object + x-etsi-ref: 6.2.4 + + Origin: + description: Indicates the location of the map origin in the local Cartesian coordinate system. + properties: + altitude: + description: Location altitude relative to the WGS84 ellipsoid surface. + format: float + type: number + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Float + latitude: + description: "Location latitude, expressed in the range -90\xB0 to +90\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + longitude: + description: "Location longitude, expressed in the range -180\xB0 to +180\xB0." + format: float + type: number + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + required: + - latitude + - longitude + type: object + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Structure(inlined) + NotificationResult: + description: This enumeration represents the result of a localization associated with a notification + enum: + - SUCCESS + - ABNORMAL + type: string + + ReportingCtrl: + properties: + maximumCount: + description: Maximum number of notifications. For no maximum, either do not include this element or specify a value of zero. Default value is 0. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + maximumFrequency: + description: Maximum frequency (in seconds) of notifications per subscription. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + minimumInterval: + description: Minimum interval between reports in case frequently reporting. Unit is second. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + type: object + x-etsi-ref: 6.5.6 + + LocationEventType: + description: This type represents specified event types for UE location report. + enum: + - ENTERING_AREA_EVENT + - LEAVING_AREA_EVENT + type: string + TimeStamp: properties: nanoSeconds: @@ -2359,6 +4105,8 @@ components: x-etsi-mec-origin-type: String locationInfo: $ref: '#/components/schemas/LocationInfo' + civicInfo: + $ref: '#/components/schemas/CivicAddress' resourceURL: description: Self-referring URL, see note 1. type: string @@ -2574,6 +4322,45 @@ components: required: - resourceURL type: object + ZoneLocationEventNotification: + properties: + # _links: + # $ref: '#/components/schemas/_links' + address: + description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + notificationType: + description: Shall be set to "ZoneLocationEventNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + timeStamp: + description': Time stamp. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + userLocationEvent: + description': The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT","LEAVING_AREA_EVENT". + x-etsi-mec-cardinality': '1' + x-etsi-mec-origin-type': LocationEventType + $ref: '#/components/schemas/LocationEventType' + zoneId: + description: 'The identity of the zone. ' + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + required: + - notificationType + - address + - userLocationEvent + - zoneId + - _links + type: object + x-etsi-ref: 6.4.6 + ZoneStatusNotification: description: A type containing zone status notification. properties: @@ -2618,43 +4405,81 @@ components: - timestamp type: object ZoneStatusSubscription: - description: A type containing zone status subscription. properties: + # _links: + # $ref: '#/components/schemas/_links' callbackReference: - $ref: '#/components/schemas/CallbackReference' + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + format: uri + type: string + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri clientCorrelator: - description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. + description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. See note 2. type: string x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - numberOfUsersAPThreshold: - description: Threshold number of users in an access point which if crossed shall cause a notification + x-etsi-mec-origin-type: String + expiryDeadline: + description': The expiration time of the subscription determined by the Zone Status Service. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp + $ref: '#/components/schemas/TimeStamp' + lowerNumberOfUsersAPThreshold: + description: Threshold number of users in an access point which if crossed downward shall cause a notification type: integer x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: unsignedInt - numberOfUsersZoneThreshold: - description: Threshold number of users in a zone which if crossed shall cause a notification + x-etsi-mec-origin-type: UnsignedInt + lowerNumberOfUsersZoneThreshold: + description: Threshold number of users in a zone which if crossed downward shall cause a notification type: integer x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: unsignedInt + x-etsi-mec-origin-type: UnsignedInt operationStatus: - description: List of operation status values to generate notifications for (these apply to all access points within a zone). + description: List of operation status values to generate notifications for (these apply to all access points within a zone). See note 3. items: $ref: '#/components/schemas/OperationStatus' + minItems: 0 type: array x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: OperationStatus - resourceURL: - description: Self referring URL + reportingCtrl: + description': Provides parameters that ctrl the reporting. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': ReportingCtrl + $ref: '#/components/schemas/ReportingCtrl' + requestTestNotification: + description: "Set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, as specified in ETSI GS\_MEC 009 [4], clause 6.12a." + type: boolean + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + subscriptionType: + description: Shall be set to "ZoneStatusSubscription". type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + upperNumberOfUsersAPThreshold: + description: Threshold number of users in an access point which if crossed upward shall cause a notification. + type: integer x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI + x-etsi-mec-origin-type: UnsignedInt + upperNumberOfUsersZoneThreshold: + description: Threshold number of users in a zone which if crossed upward shall cause a notification. + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: UnsignedInt + websockNotifConfig: + description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' zoneId: - description: Identifier of zone + description: Identifier of zone (e.g. zone001) to monitor. type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String required: - - callbackReference + - subscriptionType - zoneId type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [5], clause 5.2.3.2." + x-etsi-ref: 6.3.7 \ No newline at end of file -- GitLab From 4824e92b6de77175751eeb93c141076ed262fce8 Mon Sep 17 00:00:00 2001 From: Mubeena Date: Fri, 29 Mar 2024 11:34:47 +0500 Subject: [PATCH 09/58] Update MEC011 App Support as per v3.1.1 --- config/api/app-support.yaml | 94 +++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 50 deletions(-) diff --git a/config/api/app-support.yaml b/config/api/app-support.yaml index 7fbb0ce..fc63ffe 100644 --- a/config/api/app-support.yaml +++ b/config/api/app-support.yaml @@ -4,7 +4,7 @@ info: version: 3.1.1 description: "MEC Application Support Service is AdvantEDGE's implementation of\ \ [ETSI MEC ISG MEC011 Application Enablement API](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf)\ - \

[Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)\ + \

[Copyright (c) ETSI 2024](https://forge.etsi.org/etsi-forge-copyright-notice.txt)\ \

**Micro-service**
[meep-app-enablement](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-app-enablement/server/app-support)\ \

**Type & Usage**
Edge Service used by edge applications that want to get\ \ information about applications in the network

**Note**
AdvantEDGE supports\ @@ -19,21 +19,21 @@ externalDocs: description: 'ETSI GS MEC011 Application Enablement API, V3.1.1' url: >- https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf +servers: + - url: 'http://localhost/sandboxname/mec_app_support/v2' + variables: {} + - url: 'https://localhost/sandboxname/mec_app_support/v2' + variables: {} tags: - name: mec_app_support - name: unsupported - name: callbacks -servers: - - url: 'http://127.0.0.1:8081/mec_app_support/v2' - variables: {} - - url: 'https://127.0.0.1:8081/mec_app_support/v2' - variables: {} paths: /applications/{appInstanceId}/traffic_rules: get: tags: - unsupported - summary: get traffic rules + summary: Retrieve information about a list of mecTrafficRule resources for an application instance description: >- This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRules_GET @@ -165,7 +165,7 @@ paths: get: tags: - unsupported - summary: Get traffic rule + summary: Retrieve information about a mecTrafficRule resource description: >- This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRule_GET @@ -254,7 +254,7 @@ paths: put: tags: - unsupported - summary: Update traffic rule + summary: Update the information about a mecTrafficRule resource description: >- This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRule_PUT @@ -367,7 +367,7 @@ paths: get: tags: - unsupported - summary: Get DNS rules + summary: Retrieve information about a list of mecDnsRule resources for an application instance description: >- This method retrieves information about all the DNS rules associated with a MEC application instance. operationId: ApplicationsDnsRules_GET @@ -458,7 +458,7 @@ paths: get: tags: - unsupported - summary: Get DNS rule + summary: Retrieve information about a mecDnsRule resource description: >- This method retrieves information about a DNS rule associated with a MEC application instance. operationId: ApplicationsDnsRule_GET @@ -532,7 +532,7 @@ paths: put: tags: - unsupported - summary: Update DNS rule + summary: Update the information about a mecDnsRule resource description: 'This method activates, de-activates or updates a traffic rule.' operationId: ApplicationsDnsRule_PUT parameters: @@ -626,7 +626,7 @@ paths: get: tags: - mec_app_support - summary: Get subscriptions + summary: Retrieve information about a list of mecAppSupportSubscription resources for this subscriber description: >- The GET method may be used to request information about all subscriptions for this requestor. Upon success, the response contains message content with all the subscriptions for the requestor. operationId: ApplicationsSubscriptions_GET @@ -684,7 +684,7 @@ paths: post: tags: - mec_app_support - summary: Create subscription + summary: Create a mecAppSupportSubscription resource description: >- The POST method may be used to create a new subscription. One example use case is to create a new subscription to the MEC service availability notifications. Upon success, the response contains message content describing the created subscription. operationId: ApplicationsSubscriptions_POST @@ -775,7 +775,7 @@ paths: get: tags: - mec_app_support - summary: Get subscription + summary: Retrieve information about a mecAppSupportSubscription resource for this subscriber description: >- The GET method requests information about a subscription for this requestor. Upon success, the response contains message content with the subscription for the requestor. operationId: ApplicationsSubscription_GET @@ -841,7 +841,7 @@ paths: delete: tags: - mec_app_support - summary: delete subscription + summary: Delete a mecAppSupportSubscription resource description: >- This method deletes a mecAppSuptApiSubscription. This method is typically used in "Unsubscribing from service availability event notifications" procedure. operationId: ApplicationsSubscription_DELETE @@ -894,7 +894,7 @@ paths: post: tags: - mec_app_support - summary: Confirm termination + summary: Confirm the application level termination of an App instance description: >- This method is used to confirm the application level termination of an application instance. operationId: ApplicationsConfirmTermination_POST @@ -982,7 +982,7 @@ paths: post: tags: - mec_app_support - summary: Confirm ready + summary: Confirm the application instance is up and running description: >- This method may be used by the MEC application instance to notify the MEC platform that it is up and running. operationId: ApplicationsConfirmReady_POST @@ -1069,7 +1069,7 @@ paths: post: tags: - mec_app_support - summary: Create Registrantion + summary: Register the MEC application instance to the MEC platform description: >- The POST method may be used by the MEC application instance to request its registration to the MEC platform. operationId: ApplicationsRegistrations_POST @@ -1148,7 +1148,7 @@ paths: get: tags: - mec_app_support - summary: Get Registration + summary: Retrieve information about the MEC application instance registration to the MEC platform description: >- The GET method may be used by the MEC application instance to retrieve information about the existing MEC application instance registration to the MEC platform. operationId: ApplicationsRegistration_GET @@ -1206,7 +1206,7 @@ paths: put: tags: - mec_app_support - summary: Update Registration + summary: Update the existing registration of that MEC application instance to the MEC platform description: >- The PUT method may be used by the MEC application instance to update its registration to the MEC platform. operationId: ApplicationsRegistration_PUT @@ -1280,7 +1280,7 @@ paths: delete: tags: - mec_app_support - summary: delete registration + summary: Request deregistration of the application instance from the MEC platform description: >- The DELETE method is used to cancel the existing MEC application instance registration. operationId: ApplicationsRegistration_DELETE @@ -1348,7 +1348,7 @@ paths: get: tags: - mec_app_support - summary: Retrieve timing capabilities + summary: Retrieve information about the mecTimingCaps resource description: >- This method retrieves the information of the platform's timing capabilities which corresponds to the timing capabilities query operationId: TimingCaps_GET @@ -1400,7 +1400,7 @@ paths: get: tags: - mec_app_support - summary: Retrieve current time + summary: Retrieve information about the mecCurrentTime resource description: >- This method retrieves the information of the platform's current time which corresponds to the get platform time procedure operationId: TimingCurrentTime_GET @@ -1460,7 +1460,7 @@ components: type: string description: Indication about the MEC application instance. example: - - READY + READY description: >- This type represents the information that the MEC application instance indicates to the MEC platform that it is up and running. AppInfo: @@ -1475,14 +1475,14 @@ components: description: >- Name of the application. It shall be consistent with the appName in the AppD, if an AppD is available. example: - - appName + appName appProvider: title: appProvider type: string description: >- Provider of the application. It shall be consistent with the appProvider in the AppD, if an AppD is available. See note 1. example: - - appProvider1 + appProvider1 appCategory: $ref: '#/components/schemas/CategoryRef' appDId: @@ -1491,14 +1491,14 @@ components: description: >- The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way. Shall be present if the application instance is instantiated by the MEC Management. example: - - TODO + TODO appInstanceId: title: appInstanceId type: string description: >- Identifier of the application instance. Shall be present if the application instance is instantiated by the MEC Management. example: - - ID1 + ID1 endpoint: oneOf: - $ref: '#/components/schemas/EndPointInfoUris' @@ -1540,7 +1540,7 @@ components: description: >- Indicate whether the application instance is instantiated by the MEC Management. Default to FALSE if absent. example: - - false + false appProfile: $ref: '#/components/schemas/AppProfile' description: >- @@ -1606,7 +1606,7 @@ components: type: string description: Shall be set to AppTerminationNotificationSubscription. example: - - AppTerminationNotificationSubscription + AppTerminationNotificationSubscription callbackReference: type: string description: >- @@ -1617,7 +1617,7 @@ components: type: string description: It is used as the filtering criterion for the subscribed events. example: - - ID1 + ID1 description: >- This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop. CurrentTime: @@ -1741,7 +1741,7 @@ components: type: string description: URI referring to a resource example: - - /mecAppSuptApi/example + /mecAppSuptApi/example description: >- This type represents a type of link and may be referenced from data structures @@ -2163,23 +2163,23 @@ components: type: string description: Reference of the catalogue example: - - /example/catalogue1 + /example/catalogue1 id: type: string description: Unique identifier of the category example: - - id12345 + id12345 name: type: string description: >- Name of the category, example values include RNI, Location & Bandwidth Management example: - - RNI + RNI version: type: string description: Category version example: - - version1 + version1 description: This type represents the category reference EndPointInfoAddress: title: EndPointInfoAddress @@ -2248,17 +2248,11 @@ components: type: string description: Fully Qualified Domain Name of the service. See note. description: 'This type represents information about a transport endpoint. ' - - Not_specified: - description: 'Not_specified' - ServiceDependency: properties: requestedPermissions: 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. - items: - $ref: '#/components/schemas/Not_specified' minItems: 0 type: array serCategory: @@ -2332,7 +2326,7 @@ components: type: string description: The enumeration represents types of serializers example: - - JSON + JSON SecurityInfo: title: SecurityInfo type: object @@ -2358,7 +2352,7 @@ components: type: string description: The token endpoint example: - - /mecSerMgmtApi/security/TokenEndPoint + /mecSerMgmtApi/security/TokenEndPoint description: Parameters related to use of OAuth 2.0 SecurityInfoOAuth2InfoGrantType: title: SecurityInfoOAuth2InfoGrantType @@ -2370,7 +2364,7 @@ components: type: string description: OAuth 2.0 grant type example: - - OAUTH2_CLIENT_CREDENTIALS + OAUTH2_CLIENT_CREDENTIALS TransportType: title: TransportType enum: @@ -2384,7 +2378,7 @@ components: type: string description: The enumeration TransportType represents types of transports example: - - REST_HTTP + REST_HTTP FeatureDependency: properties: featureName: @@ -2413,7 +2407,7 @@ components: description: The identifier of the EAS type: string example: - - appName + appName endPt: description: The version of the feature. oneOf: @@ -2431,7 +2425,7 @@ components: type: string description: Identifier of the ASP that provides the EAS. example: - - appProvider1 + appProvider1 type: description: The category or type of EAS. type: string @@ -2478,7 +2472,7 @@ components: description: >- The period indicating to the EES, how often the EES needs to check the EAS's availability after a successful registration. example: - - 1577836800 + 1577836800 status: type: string description: 'EAS status information. ' -- GitLab From 532e504b45fe1473981f7d284033009051fa0337 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 22 Apr 2024 08:04:42 +0200 Subject: [PATCH 10/58] Update VIS status to 3.2.1 --- config/.meepctl-repocfg.yaml | 22 +- config/api/app-support.yaml | 2171 ++++++++++++++++---------- config/api/service-mgmt.yaml | 2862 ++++++++++++++++++++++------------ config/api/vis-api.yaml | 6 +- config/permissions.yaml | 2 +- 5 files changed, 3226 insertions(+), 1837 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index cb34c8a..fa088ac 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -38,7 +38,7 @@ repo: # platform ingress configuration ingress: # host name - host: try-mec.etsi.org + host: mec-platform.etsi.org # enable https only (redirect http requests to https port) https-only: true # bind to host ports (true) or node ports (false) @@ -67,13 +67,13 @@ repo: # GitHub OAuth provider config github: # enable GitHub OAuth - enabled: truee + enabled: true # authorization url auth-url: https://github.com/login/oauth/authorize # access token url token-url: https://github.com/login/oauth/access_token # OAuth redirect URI - redirect-uri: https://try-mec.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://mec-platform.etsi.org/platform-ctrl/v1/authorize # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-github # GitLab OAuth provider config @@ -85,7 +85,7 @@ repo: # access token url token-url: https://forge.etsi.org/rep/oauth/token # OAuth redirect URI - redirect-uri: https://try-mec.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://mec-platform.etsi.org/platform-ctrl/v1/authorize # GitLab api url api-url: https://forge.etsi.org/rep/api/v4 # OAuth k8s secret (data: client-id, secret) @@ -98,7 +98,7 @@ repo: # enable influx data backups enabled: true # object store url - url: https://metrics.try-mec.etsi.org/ + url: https://metrics.mec-platform.etsi.org/ # object store configuration secret secret: meep-influx-objstore-config # Number of days to retain daily data backups @@ -114,11 +114,11 @@ repo: # prometheus environment (dev|prod) promenv: prod # unique deployment identifier - replica: platform-ip + replica: 172.29.10.52 # Thanos long-term storage thanos: # enable Thanos - enabled: true + enabled: false # object store configuration secret secret: meep-thanos-objstore-config # query component @@ -148,7 +148,7 @@ repo: # Thanos long-term storage archive thanos-archive: # enable Thanos archive - enabled: true + enabled: false # archive object store configuration secret secret: meep-thanos-archive-objstore-config @@ -836,11 +836,11 @@ repo: build-flags: - -mod=vendor # enable meepctl build - build: true + build: false # enable meepctl dockerize - dockerize: true + dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # supports code coverage measurement when built in codecov mode codecov: true # supports onboarded device application instantiation diff --git a/config/api/app-support.yaml b/config/api/app-support.yaml index f19f1c9..a23664f 100644 --- a/config/api/app-support.yaml +++ b/config/api/app-support.yaml @@ -1,16 +1,14 @@ -openapi: 3.0.0 -servers: - - url: 'https://localhost/sandboxname/mec_app_support/v1' +openapi: 3.0.2 info: title: AdvantEDGE MEC Application Support API - version: 2.2.1 - description: - "MEC Application Support Service is AdvantEDGE's implementation of - [ETSI MEC ISG MEC011 Application Enablement API](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf) -

[Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt) -

**Micro-service**
[meep-app-enablement](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-app-enablement/server/app-support) -

**Type & Usage**
Edge Service used by edge applications that want to get information about applications in the network -

**Note**
AdvantEDGE supports a selected subset of Application Support API endpoints (see below)." + version: 3.1.1 + description: "MEC Application Support Service is AdvantEDGE's implementation of\ + \ [ETSI MEC ISG MEC011 Application Enablement API](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf)\ + \

[Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)\ + \

**Micro-service**
[meep-app-enablement](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-app-enablement/server/app-support)\ + \

**Type & Usage**
Edge Service used by edge applications that want to get\ + \ information about applications in the network

**Note**
AdvantEDGE supports\ + \ a selected subset of Application Support API endpoints (see below)." license: name: Apache 2.0 url: 'https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE' @@ -18,73 +16,118 @@ info: name: InterDigital AdvantEDGE Support email: AdvantEDGE@InterDigital.com externalDocs: - description: 'ETSI GS MEC011 Application Enablement API, V2.2.1' + description: 'ETSI GS MEC011 Application Enablement API, V3.1.1' url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf -security: - - {} + https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf tags: - name: mec_app_support - name: unsupported - name: callbacks +servers: + - url: 'https://localhost/sandboxname/mec_app_support/v2' + variables: {} paths: /applications/{appInstanceId}/traffic_rules: get: tags: - unsupported - description: - This method retrieves information about all the traffic rules associated - with a MEC application instance. + summary: get traffic rules + description: >- + This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRules_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing an array of the + TrafficRules is returned. + headers: {} content: application/json: schema: type: array - example: - - trafficRuleId: TrafficRule123 - serName: ExampleService - filterType: FLOW - priority: 1 - trafficFilter: - - srcAddress: - - 192.168.2.0/24 - - 192.168.3.0/24 - dstAddress: - - 192.127.4.100/32 - dstPort: - - '80' - action: FORWARD_DECAPSULATED - dstInterface: - - dstInterface0: null - interfaceType: IP - dstIpAddress: 20.1.1.1 - - dstInterface1: null - interfaceType: IP - dstIpAddress: 20.1.1.2 - state: ACTIVE items: $ref: '#/components/schemas/TrafficRule' - x-content-type: application/json + description: '' + example: + - - trafficRuleId: TrafficRule123 + filterType: FLOW + priority: 1 + trafficFilter: + - srcAddress: + - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' + dstPort: + - '80' + action: FORWARD_DECAPSULATED + dstInterface: + - dstInterface: null + interfaceType: IP + tunnelInfo: tunnel + dstIpAddress: 20.1.1.1 + state: ACTIVE + example: + TrafficRules: + value: + - trafficRuleId: TrafficRule123 + filterType: FLOW + priority: 1 + trafficFilter: + - srcAddress: + - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' + dstPort: + - '80' + action: FORWARD_DECAPSULATED + dstInterface: + - dstInterface: null + interfaceType: IP + tunnelInfo: tunnel + dstIpAddress: 20.1.1.1 + state: ACTIVE + - trafficRuleId: TrafficRule123 + filterType: FLOW + priority: 1 + trafficFilter: + - srcAddress: + - 192.127.4.104/32 + - 192.127.4.105/32 + dstAddress: + - 192.127.4.106/32 + - 192.127.4.107/32 + srcPort: + - '80' + dstPort: + - '80' + action: FORWARD_DECAPSULATED + dstInterface: + - dstInterface: null + interfaceType: IP + tunnelInfo: tunnel + dstIpAddress: 20.1.1.2 + state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -94,17 +137,18 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be + mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -113,23 +157,23 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/traffic_rules/{trafficRuleId}: get: tags: - unsupported - description: - This method retrieves information about all the traffic rules associated - with a MEC application instance. + summary: Get traffic rule + description: >- + This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRule_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: trafficRuleId @@ -137,14 +181,13 @@ paths: description: Represents a traffic rule. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing the TrafficRules is returned. + headers: {} content: application/json: schema: @@ -153,27 +196,30 @@ paths: TrafficRule: value: trafficRuleId: TrafficRule123 - serName: ExampleService filterType: FLOW priority: 1 trafficFilter: - srcAddress: - - 192.168.2.0/24 - - 192.168.3.0/24 - dstAddress: - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' dstPort: - '80' action: FORWARD_DECAPSULATED dstInterface: - - dstInterface0: null + - dstInterface: null interfaceType: IP + tunnelInfo: tunnel dstIpAddress: 20.1.1.1 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -183,17 +229,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -202,22 +248,22 @@ paths: schema: type: object description: Empty schema + deprecated: false put: tags: - unsupported - description: - This method retrieves information about all the traffic rules associated - with a MEC application instance. + summary: Update traffic rule + description: >- + This method retrieves information about all the traffic rules associated with a MEC application instance. operationId: ApplicationsTrafficRule_PUT parameters: - name: appInstanceId in: path - description: + description: >- Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: trafficRuleId @@ -225,11 +271,11 @@ paths: description: Represents a traffic rule. required: true style: simple - explode: false schema: type: string requestBody: - description: One or more updated attributes that are allowed to be changed + description: >- + One or more updated attributes that are allowed to be changed are included in the TrafficRule data structure in the message content of the request. content: application/json: schema: @@ -237,9 +283,9 @@ paths: required: true responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing data type describing the updated TrafficRule is returned. + headers: {} content: application/json: schema: @@ -253,22 +299,26 @@ paths: priority: 1 trafficFilter: - srcAddress: - - 192.168.2.0/24 - - 192.168.3.0/24 - dstAddress: - 192.127.4.100/32 + - 192.127.4.101/32 + dstAddress: + - 192.127.4.102/32 + - 192.127.4.103/32 + srcPort: + - '80' dstPort: - '80' action: FORWARD_DECAPSULATED dstInterface: - dstInterface0: null interfaceType: IP + tunnelInfo: tunnel dstIpAddress: 20.1.1.1 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -278,17 +328,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -298,9 +348,9 @@ paths: type: object description: Empty schema '412': - description: - Precondition Failed. It is used when a condition has failed - during conditional requests, e.g. when using ETags to avoid write conflicts. + description: >- + Precondition Failed. It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. + headers: {} content: application/problem+json: schema: @@ -309,48 +359,69 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/dns_rules: get: tags: - unsupported - description: - This method retrieves information about all the DNS rules associated - with a MEC application instance. + summary: Get DNS rules + description: >- + This method retrieves information about all the DNS rules associated with a MEC application instance. operationId: ApplicationsDnsRules_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing an array of the DnsRules is returned. + headers: {} content: application/json: schema: type: array - example: - - dnsRuleId: DnsRule1 - domainName: www.example.com - ipAddressType: IP_V4 - ipAddress: 146.241.7.3 - ttl: 300 - state: ACTIVE items: $ref: '#/components/schemas/DnsRule' - x-content-type: application/json + description: '' + example: + - - dnsRuleId: DnsRule1 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.3 + ttl: 300 + state: ACTIVE + - dnsRuleId: DnsRule2 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.4 + ttl: 300 + state: INACTIVE + example: + DnsRules: + value: + - dnsRuleId: DnsRule1 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.3 + ttl: 300 + state: ACTIVE + - dnsRuleId: DnsRule2 + domainName: www.example.com + ipAddressType: IP_V4 + ipAddress: 146.241.7.4 + ttl: 300 + state: INACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -360,17 +431,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -379,23 +450,23 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/dns_rules/{dnsRuleId}: get: tags: - unsupported - description: - This method retrieves information about a DNS rule associated with - a MEC application instance. + summary: Get DNS rule + description: >- + This method retrieves information about a DNS rule associated with a MEC application instance. operationId: ApplicationsDnsRule_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: dnsRuleId @@ -403,14 +474,13 @@ paths: description: Represents a DNS rule. required: true style: simple - explode: false schema: type: string responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing the DnsRules is returned. + headers: {} content: application/json: schema: @@ -425,9 +495,9 @@ paths: ttl: 300 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -437,17 +507,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -456,20 +526,20 @@ paths: schema: type: object description: Empty schema + deprecated: false put: tags: - unsupported - description: This method activates, de-activates or updates a traffic rule. + summary: Update DNS rule + description: 'This method activates, de-activates or updates a traffic rule.' operationId: ApplicationsDnsRule_PUT parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: dnsRuleId @@ -477,11 +547,10 @@ paths: description: Represents a DNS rule. required: true style: simple - explode: false schema: type: string requestBody: - description: The updated state is included in the entity body of the request. + description: The updated "state" is included in the message content of the request. content: application/json: schema: @@ -489,14 +558,14 @@ paths: required: true responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + Upon success, a response message content containing data type describing the updated DnsRule is returned. + headers: {} content: application/json: schema: $ref: '#/components/schemas/DnsRule' - example: + examples: DnsRule: value: dnsRuleId: DnsRule1 @@ -506,9 +575,9 @@ paths: ttl: 300 state: ACTIVE '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -518,17 +587,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -538,9 +607,9 @@ paths: type: object description: Empty schema '412': - description: - Precondition Failed. It is used when a condition has failed - during conditional requests, e.g. when using ETags to avoid write conflicts. + description: >- + Precondition Failed. It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts. + headers: {} content: application/problem+json: schema: @@ -549,39 +618,38 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/subscriptions: get: tags: - mec_app_support - description: - The GET method may be used to request information about all subscriptions - for this requestor. Upon success, the response contains entity body with all - the subscriptions for the requestor. + summary: Get subscriptions + description: >- + The GET method may be used to request information about all subscriptions for this requestor. Upon success, the response contains message content with all the subscriptions for the requestor. operationId: ApplicationsSubscriptions_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string responses: '200': - description: - Upon success, a response body containing the list of links - to the requested subscriptions is returned. + description: >- + Upon success, a response message content containing the list of links to the requested subscriptions is returned. + headers: {} content: application/json: schema: $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -591,17 +659,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -610,29 +678,26 @@ paths: schema: type: object description: Empty schema + deprecated: false post: tags: - mec_app_support - description: - The POST method may be used to create a new subscription. One example - use case is to create a new subscription to the MEC service availability notifications. - Upon success, the response contains entity body describing the created subscription. + summary: Create subscription + description: >- + The POST method may be used to create a new subscription. One example use case is to create a new subscription to the MEC service availability notifications. Upon success, the response contains message content describing the created subscription. operationId: ApplicationsSubscriptions_POST parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string requestBody: - description: - Entity body in the request contains a subscription to the MEC - application termination notifications that is to be created. + description: >- + Message content in the request contains a subscription to the MEC application termination notifications that is to be created. content: application/json: schema: @@ -640,24 +705,24 @@ paths: required: true responses: '201': - description: - Entity body in the request contains a subscription to the MEC - service availability notifications that is to be created. + description: >- + Entity body in the request contains a subscription to the MEC service availability notifications that is to be created. headers: location: description: The resource URI of the created resource - style: simple - schema: - type: string - format: uri + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource content: application/json: schema: $ref: '#/components/schemas/AppTerminationNotificationSubscription' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -667,17 +732,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -686,65 +751,62 @@ paths: schema: type: object description: Empty schema + deprecated: false callbacks: AppTerminationNotification: '{$request.body#/callbackUri}': post: + description: >- + Represents the information that the MEP notifies the subscribed application instance about the corresponding application instance termination/stop' + operationId: AppTerminationNotification_POST tags: - callbacks - description: - Represents the information that the MEP notifies the subscribed - application instance about the corresponding application instance - termination/stop' - operationId: AppTerminationNotification_POST + summary: Create callback requestBody: $ref: '#/components/requestBodies/AppTerminationNotification' responses: '200': - description: - Expected responses from callback consumer, if it accepts - the callback + description: >- + Expected responses from callback consumer, if it accepts the callback + parameters: [] /applications/{appInstanceId}/subscriptions/{subscriptionId}: get: tags: - mec_app_support - description: - The GET method requests information about a subscription for this - requestor. Upon success, the response contains entity body with the subscription - for the requestor. + summary: Get subscription + description: >- + The GET method requests information about a subscription for this requestor. Upon success, the response contains message content with the subscription for the requestor. operationId: ApplicationsSubscription_GET parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: subscriptionId in: path - description: Represents a subscription to the notifications from the MEC platform. + description: >- + Represents a subscription to the notifications from the MEC platform. required: true style: simple - explode: false schema: type: string responses: '200': - description: - Upon success, a response body containing the requested subscription - is returned. + description: >- + Upon success, a response message content containing the requested subscription is returned. + headers: {} content: application/json: schema: $ref: '#/components/schemas/AppTerminationNotificationSubscription' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -754,17 +816,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -773,49 +835,49 @@ paths: schema: type: object description: Empty schema + deprecated: false delete: tags: - mec_app_support - description: - This method deletes a mecAppSuptApiSubscription. This method is - typically used in "Unsubscribing from service availability event notifications" - procedure. + summary: delete subscription + description: >- + This method deletes a mecAppSuptApiSubscription. This method is typically used in "Unsubscribing from service availability event notifications" procedure. operationId: ApplicationsSubscription_DELETE parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string - name: subscriptionId in: path - description: Represents a subscription to the notifications from the MEC platform. + description: >- + Represents a subscription to the notifications from the MEC platform. required: true style: simple - explode: false schema: type: string responses: '204': description: No Content + headers: {} content: {} '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of + the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -824,26 +886,28 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/confirm_termination: post: tags: - mec_app_support - description: - This method is used to confirm the application level termination of - an application instance. + summary: Confirm termination + description: >- + This method is used to confirm the application level termination of an application instance. operationId: ApplicationsConfirmTermination_POST parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string requestBody: + description: >- + Message content in the request contains the operational action the application instance is responding to. content: application/json: schema: @@ -851,12 +915,14 @@ paths: required: false responses: '204': - description: No Content + description: >- + No Content. The request is acknowledged. The response message content shall be empty. + headers: {} content: {} '401': - description: - Unauthorized. It is used when the client did not submit the - appropriate credentials. + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} content: application/problem+json: schema: @@ -866,17 +932,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -886,10 +952,9 @@ paths: type: object description: Empty schema '409': - description: - Conflict. The operation cannot be executed currently, due to - a conflict with the state of the resource. Typically, this is because - the application instance resource is in NOT_INSTANTIATED state. + description: >- + Conflict. The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is because the application instance resource is in NOT_INSTANTIATED state. + headers: {} content: application/problem+json: schema: @@ -900,6 +965,7 @@ paths: description: Empty schema '429': description: Too Many Requests. It is used when a rate limiter has triggered. + headers: {} content: application/problem+json: schema: @@ -908,38 +974,42 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /applications/{appInstanceId}/confirm_ready: post: tags: - mec_app_support - description: - 'This method may be used by the MEC application instance to notify - the MEC platform that it is up and running. ' + summary: Confirm ready + description: >- + This method may be used by the MEC application instance to notify the MEC platform that it is up and running. operationId: ApplicationsConfirmReady_POST parameters: - name: appInstanceId in: path - description: - Represents a MEC application instance. Note that the appInstanceId - is allocated by the MEC platform manager. + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. required: true style: simple - explode: false schema: type: string requestBody: + description: >- + Message content in the request contains the indication that the application instance is up and running. content: application/json: schema: $ref: '#/components/schemas/AppReadyConfirmation' + required: false responses: '204': description: No Content + headers: {} content: {} '401': - description: - Unauthorized. It is used when the client did not submit the - appropriate credentials. + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} content: application/problem+json: schema: @@ -949,17 +1019,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -969,10 +1039,9 @@ paths: type: object description: Empty schema '409': - description: - Conflict. The operation cannot be executed currently, due to - a conflict with the state of the resource. Typically, this is because - the application instance resource is in NOT_INSTANTIATED state. + description: >- + Conflict. The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is because the application instance resource is in NOT_INSTANTIATED state. + headers: {} content: application/problem+json: schema: @@ -983,6 +1052,286 @@ paths: description: Empty schema '429': description: Too Many Requests. It is used when a rate limiter has triggered. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + parameters: [] + /registrations: + post: + tags: + - mec_app_support + summary: Create Registrantion + description: >- + The POST method may be used by the MEC application instance to request its registration to the MEC platform. + operationId: ApplicationsRegistrations_POST + parameters: [] + requestBody: + description: >- + The message content in the request contains the profile of the MEC application instance, calling the MEC platform to register the MEC application instance. + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + required: false + responses: + '201': + description: >- + Indicates successful resource creation for registration of the MEC application instance to the MEC platform. + headers: + location: + description: The resource URI of the created resource + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '401': + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + parameters: [] + /registrations/{appInstanceId}: + get: + tags: + - mec_app_support + summary: Get Registration + description: >- + The GET method may be used by the MEC application instance to retrieve information about the existing MEC application instance registration to the MEC platform. + operationId: ApplicationsRegistration_GET + parameters: + - name: appInstanceId + in: path + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. + required: true + style: simple + schema: + type: string + responses: + '200': + description: >- + Upon success, a response message content containing the requested subscription is returned. + headers: {} + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + put: + tags: + - mec_app_support + summary: Update Registration + description: >- + The PUT method may be used by the MEC application instance to update its registration to the MEC platform. + operationId: ApplicationsRegistration_PUT + parameters: + - name: appInstanceId + in: path + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. + required: true + style: simple + schema: + type: string + requestBody: + description: >- + Message content in the request contains the profile of the application, calling the MEC platform to update the existing MEC application instance registration. + content: + application/json: + schema: + $ref: '#/components/schemas/AppInfo' + required: true + responses: + '204': + description: No Content + headers: {} + content: {} + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '401': + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + delete: + tags: + - mec_app_support + summary: delete registration + description: >- + The DELETE method is used to cancel the existing MEC application instance registration. + operationId: ApplicationsRegistration_DELETE + parameters: + - name: appInstanceId + in: path + description: >- + Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager. + required: true + style: simple + schema: + type: string + responses: + '204': + description: No Content + headers: {} + content: {} + '400': + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '401': + description: >- + Unauthorized. It is used when the client did not submit the appropriate credentials. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + '403': + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -991,28 +1340,30 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /timing/timing_caps: get: tags: - mec_app_support - description: - This method retrieves the information of the platform's timing - capabilities which corresponds to the timing capabilities query + summary: Retrieve timing capabilities + description: >- + This method retrieves the information of the platform's timing capabilities which corresponds to the timing capabilities query operationId: TimingCaps_GET parameters: [] responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + It is used to indicate nonspecific success. The response message content contains a representation of the resource. + headers: {} content: application/json: schema: $ref: '#/components/schemas/TimingCaps' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -1022,17 +1373,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -1041,28 +1392,30 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] /timing/current_time: get: tags: - mec_app_support - description: - This method retrieves the information of the platform's current - time which corresponds to the get platform time procedure + summary: Retrieve current time + description: >- + This method retrieves the information of the platform's current time which corresponds to the get platform time procedure operationId: TimingCurrentTime_GET parameters: [] responses: '200': - description: - It is used to indicate nonspecific success. The response body - contains a representation of the resource. + description: >- + It is used to indicate nonspecific success. The response message content contains a representation of the resource. + headers: {} content: application/json: schema: $ref: '#/components/schemas/CurrentTime' '400': - description: - Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: >- + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + headers: {} content: application/problem+json: schema: @@ -1072,17 +1425,17 @@ paths: type: object description: Empty schema '403': - description: - Forbidden. The operation is not allowed given the current status - of the resource. + description: >- + Forbidden. The operation is not allowed given the current status of the resource. + headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': - description: - Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: >- + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + headers: {} content: application/problem+json: schema: @@ -1091,6 +1444,8 @@ paths: schema: type: object description: Empty schema + deprecated: false + parameters: [] components: schemas: AppReadyConfirmation: @@ -1101,27 +1456,106 @@ components: properties: indication: type: string - enum: - - READY description: Indication about the MEC application instance. - description: - This type represents the information that the MEC application instance - indicates to the MEC platform that it is up and running. - AppTerminationConfirmation: - title: AppTerminationConfirmation + example: + - READY + description: >- + This type represents the information that the MEC application instance indicates to the MEC platform that it is up and running. + AppInfo: + title: AppInfo required: - - operationAction + - appName type: object properties: - operationAction: + appName: + title: appName + type: string + description: >- + Name of the application. It shall be consistent with the appName in the AppD, if an AppD is available. + example: + - appName + appProvider: + title: appProvider + type: string + description: >- + Provider of the application. It shall be consistent with the appProvider in the AppD, if an AppD is available. See note 1. + example: + - appProvider1 + appCategory: + $ref: '#/components/schemas/CategoryRef' + appDId: + title: appDId + type: string + description: >- + The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way. Shall be present if the application instance is instantiated by the MEC Management. + example: + - TODO + appInstanceId: + title: appInstanceId + type: string + description: >- + Identifier of the application instance. Shall be present if the application instance is instantiated by the MEC Management. + example: + - ID1 + endpoint: + oneOf: + - $ref: '#/components/schemas/EndPointInfoUris' + - $ref: '#/components/schemas/EndPointInfoFqdn' + - $ref: '#/components/schemas/EndPointInfoAddresses' + - $ref: '#/components/schemas/EndPointInfoAlternative' + description: This type represents information about a transport endpoint + x-etsi-notes: "NOTE 1:\tIf appProfile is present, appProvider shall be consistent with provId provided in EAS profile data type, i.e. the same.\nNOTE 2:\tIf appProfile is present, endpoint shall refer to the same end point as endPt provided in EAS profile data type." + appServiceRequired: + title: appServiceRequired + type: array + items: + $ref: '#/components/schemas/ServiceDependency' + description: >- + Describes services a MEC application requires to run. ServiceDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + appServiceOptional: + title: appServiceOptional + type: array + items: + $ref: '#/components/schemas/ServiceDependency' + description: >- + Describes services a MEC application may use if available. ServiceDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + appFeatureRequired: + title: appFeatureRequired + type: array + items: + $ref: '#/components/schemas/FeatureDependency' + description: >- + Describes features a MEC application requires to run. FeatureDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + appFeatureOptional: + title: appFeatureOptional + type: array + items: + $ref: '#/components/schemas/FeatureDependency' + description: >- + Describes features a MEC application may use if available. FeatureDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available. + isInsByMec: + type: boolean + description: >- + Indicate whether the application instance is instantiated by the MEC Management. Default to FALSE if absent. + example: + - false + appProfile: + $ref: '#/components/schemas/AppProfile' + description: >- + This type represents the information provided by the MEC application instance as part of the "application registration request" and "application registration update" messages. + x-etsi-notes: "NOTE 1:\tIf appProfile is present, appProvider shall be consistent with provId provided in EAS profile data type, i.e. the same.\nNOTE 2:\tIf appProfile is present, endpoint shall refer to the same end point as endPt provided in EAS profile data type." + AppTerminationConfirmation: + title: AppTerminationConfirmation + required: + - operationAction + type: object + properties: + operationAction: $ref: '#/components/schemas/OperationActionType' - description: - This type represents the information that the MEC application instance - provides to the MEC platform when informing it that the application has completed - its application level related terminate/stop actions, e.g. retention of application - state in the case of stop. - AppTerminationNotification.Links: - title: AppTerminationNotification.Links + description: >- + This type represents the information that the MEC application instance provides to the MEC platform when informing it that the application has completed its application level related terminate/stop actions, e.g. retention of application state in the case of stop. + AppTerminationNotificationLinks: + title: AppTerminationNotificationLinks required: - subscription type: object @@ -1129,106 +1563,95 @@ components: subscription: $ref: '#/components/schemas/LinkType' confirmTermination: - $ref: '#/components/schemas/LinkType' + $ref: '#/components/schemas/LinkTypeConfirmTermination' description: Object containing hyperlinks related to the resource. AppTerminationNotification: title: AppTerminationNotification required: - - _links - - maxGracefulTimeout - notificationType - operationAction + - maxGracefulTimeout + - _links type: object properties: notificationType: type: string description: Shall be set to AppTerminationNotification. - example: '["AppTerminationNotification"]' + example: + - AppTerminationNotification operationAction: $ref: '#/components/schemas/OperationActionType' maxGracefulTimeout: type: integer - description: - Maximum timeout value in seconds for graceful termination or - graceful stop of an application instance. + description: >- + Maximum timeout value in seconds for graceful termination or graceful stop of an application instance. + example: + - 10 _links: - $ref: '#/components/schemas/AppTerminationNotification.Links' - description: - This type represents the information that the MEC platform notifies - the subscribed application instance about the corresponding application instance - termination/stop. + $ref: '#/components/schemas/AppTerminationNotificationLinks' + description: >- + This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop. AppTerminationNotificationSubscription: title: AppTerminationNotificationSubscription required: + - subscriptionType + - callbackReference - _links - appInstanceId - - callbackReference - - subscriptionType type: object properties: subscriptionType: type: string description: Shall be set to AppTerminationNotificationSubscription. - example: '["AppTerminationNotificationSubscription"]' + example: + - AppTerminationNotificationSubscription callbackReference: type: string - description: - URI selected by the MEC application instance to receive notifications - on the subscribed MEC application instance management information. This - shall be included in both the request and the response. + description: >- + URI selected by the MEC application instance to receive notifications on the subscribed MEC application instance management information. This shall be included in both the request and the response. _links: $ref: '#/components/schemas/Self' appInstanceId: type: string description: It is used as the filtering criterion for the subscribed events. - example: '["ID1"]' - description: - This type represents the information that the MEC platform notifies - the subscribed application instance about the corresponding application instance - termination/stop. - example: - appInstanceId: '["ID1"]' - subscriptionType: '["AppTerminationNotificationSubscription"]' - _links: - self: - href: '["/mecAppSuptApi/example"]' - callbackReference: callbackReference + example: + - ID1 + description: >- + This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop. CurrentTime: title: CurrentTime required: - - nanoSeconds - seconds + - nanoSeconds - timeSourceStatus type: object properties: seconds: type: integer - description: - The seconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 1577836800 nanoSeconds: type: integer - description: - The nanoseconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 0 timeSourceStatus: $ref: '#/components/schemas/TimeSourceStatus' - description: - This type represents the information provided by the MEC platform - in response to the Get Platform Time Request message. - example: - seconds: 0 - nanoSeconds: 6 - timeSourceStatus: '["TRACEABLE"]' - DestinationInterface.InterfaceType: - title: DestinationInterface.InterfaceType - type: string - description: Type of the interface - example: '["TUNNEL"]' + description: >- + This type represents the information provided by the MEC platform in response to the Get Platform Time Request message. + DestinationInterfaceInterfaceType: + title: DestinationInterfaceInterfaceType enum: - TUNNEL - MAC - IP + type: string + description: Type of the interface + example: + - TUNNEL DestinationInterface: title: DestinationInterface required: @@ -1236,88 +1659,78 @@ components: type: object properties: interfaceType: - $ref: '#/components/schemas/DestinationInterface.InterfaceType' + $ref: '#/components/schemas/DestinationInterfaceInterfaceType' tunnelInfo: $ref: '#/components/schemas/TunnelInfo' srcMacAddress: type: string description: Source address identifies the MAC address of the interface - example: '["02-00-00-00-00-00"]' + example: + - 02-00-00-00-00-00 dstMacAddress: type: string description: Source address identifies the MAC address of the interface - example: '["02-00-00-00-00-00"]' + example: + - 02-00-00-00-00-00 dstIpAddress: type: string description: IP address of the remote destination - example: '["192.0.2.0"]' - description: - This type represents the destination interface. If the action is - FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH one value shall - be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, - two values shall be provided. If the action is DROP, no value shall be provided. - example: - interfaceType: '["TUNNEL"]' - dstIpAddress: '["192.0.2.0"]' - srcMacAddress: '["02-00-00-00-00-00"]' - tunnelInfo: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' - dstMacAddress: '["02-00-00-00-00-00"]' - DnsRule.IpAddressType: - title: DnsRule.IpAddressType - type: string - description: IP address type - example: '["IP_V6"]' + example: + - 192.0.2.0 + description: >- + This type represents the destination interface. If the action is FORWARD_DECAPSULATED, FORWARD_ENCAPSULATED or PASSTHROUGH one value shall be provided. If the action is DUPLICATE_DECAPSULATED or DUPLICATE_ENCAPSULATED, two values shall be provided. If the action is DROP, no value shall be provided. + DnsRuleIpAddressType: + title: DnsRuleIpAddressType enum: - IP_V6 - IP_V4 - DnsRule.State: - title: DnsRule.State type: string - description: DNS rule state. This attribute may be updated using HTTP PUT method - example: '["ACTIVE"]' + description: IP address type + example: + - IP_V6 + DnsRuleState: + title: DnsRuleState enum: - ACTIVE - INACTIVE + type: string + description: DNS rule state. This attribute may be updated using HTTP PUT method + example: + - ACTIVE DnsRule: title: DnsRule required: - dnsRuleId - domainName - - ipAddress - ipAddressType + - ipAddress - state type: object properties: dnsRuleId: type: string description: Identifies the DNS Rule - example: '["dnsRule1"]' + example: + - dnsRule1 domainName: type: string description: FQDN resolved by the DNS rule - example: '["www.example.com"]' + example: + - www.example.com ipAddressType: - $ref: '#/components/schemas/DnsRule.IpAddressType' + $ref: '#/components/schemas/DnsRuleIpAddressType' ipAddress: type: string description: IP address associated with the FQDN resolved by the DNS rule - example: '["192.0.2.0"]' + example: + - 192.0.2.0 ttl: type: integer description: Time to live value state: - $ref: '#/components/schemas/DnsRule.State' + $ref: '#/components/schemas/DnsRuleState' description: This type represents the general information of a DNS rule. - example: - domainName: '["www.example.com"]' - ipAddress: '["192.0.2.0"]' - dnsRuleId: '["dnsRule1"]' - state: '["ACTIVE"]' - ttl: 0 - ipAddressType: '["IP_V6"]' + x-etsi-notes: "NOTE:\tIf no ttl value is provided, the DnsRule shall not expire." LinkType: title: LinkType type: object @@ -1325,14 +1738,24 @@ components: href: type: string description: URI referring to a resource - example: '["/mecAppSuptApi/example"]' - description: - This type represents a type of link and may be referenced from - data structures - example: - href: '["/mecAppSuptApi/example"]' - MecAppSuptApiSubscriptionLinkList.Links: - title: MecAppSuptApiSubscriptionLinkList.Links + example: + - /mecAppSuptApi/example + description: >- + This type represents a type of link and may be referenced from data + structures + LinkTypeConfirmTermination: + title: LinkTypeConfirmTermination + type: object + properties: + href: + type: string + description: URI referring to a resource + example: + - /mecAppSuptApi/example + description: >- + Link to the task resource where to confirm termination in case the application is ready to be terminated before expiry of the timeout. + MecAppSuptApiSubscriptionLinkListLinks: + title: MecAppSuptApiSubscriptionLinkListLinks required: - self type: object @@ -1341,20 +1764,12 @@ components: $ref: '#/components/schemas/LinkType' subscriptions: type: array - description: The MEC application instance's subscriptions items: - $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList.Subscription' - description: Self-referring URI. - example: - subscriptions: - - rel: rel - href: '["/mecAppSuptApi/example"]' - - rel: rel - href: '["/mecAppSuptApi/example"]' - self: - href: '["/mecAppSuptApi/example"]' - MecAppSuptApiSubscriptionLinkList.Subscription: - title: MecAppSuptApiSubscriptionLinkList.Subscription + $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkListSubscription' + description: The MEC application instance's subscriptions + description: Object containing hyperlinks related to the resource. + MecAppSuptApiSubscriptionLinkListSubscription: + title: MecAppSuptApiSubscriptionLinkListSubscription required: - href - subscriptionType @@ -1363,14 +1778,12 @@ components: href: type: string description: URI referring to a resource - example: '["/mecAppSuptApi/example"]' + example: + - /mecAppSuptApi/example subscriptionType: type: string - description: The values shall be set to AppTerminationNotificationSubscription. + description: Type of the subscription. The values are as defined in the "subscriptionType" attribute for each different Mp1 event subscription data type. description: A link to a subscription. - example: - subscriptionType: subscriptionType - href: '["/mecAppSuptApi/example"]' MecAppSuptApiSubscriptionLinkList: title: MecAppSuptApiSubscriptionLinkList required: @@ -1378,56 +1791,40 @@ components: type: object properties: _links: - $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList.Links' - description: - This type represents a list of links related to currently existing - subscriptions for a MEC application instance. This information is returned - when sending a request to receive current subscriptions. - example: - _links: - subscriptions: - - rel: rel - href: '["/mecAppSuptApi/example"]' - - rel: rel - href: '["/mecAppSuptApi/example"]' - self: - href: '["/mecAppSuptApi/example"]' + $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkListLinks' + description: >- + This type represents a list of links related to currently existing subscriptions for a MEC application instance. This information is returned when sending a request to receive current subscriptions. OperationActionType: title: OperationActionType - type: string - description: Operation that is being performed on the MEC application instance. - example: '["TERMINATING"]' enum: - STOPPING - TERMINATING + type: string + description: Operation that is being performed on the MEC application instance. + example: + - TERMINATING ProblemDetails: title: ProblemDetails - required: - - status - - detail type: object properties: type: type: string - description: - A URI reference according to IETF RFC 3986 that identifies - the problem type + description: >- + A URI reference according to IETF RFC 3986 that identifies the problem type title: type: string - description: A short, human-readable summary of the problem type + description: 'A short, human-readable summary of the problem type' status: type: integer description: The HTTP status code for this occurrence of the problem detail: type: string - description: - A human-readable explanation specific to this occurrence of - the problem + description: >- + A human-readable explanation specific to this occurrence of the problem instance: type: string - description: - A URI reference that identifies the specific occurrence of - the problem + description: >- + A URI reference that identifies the specific occurrence of the problem Self: title: Self required: @@ -1437,283 +1834,210 @@ components: self: $ref: '#/components/schemas/LinkType' description: Self-referring URI. - example: - self: - href: '["/mecAppSuptApi/example"]' - TimingCaps.NtpServers.AuthenticationOption: - title: TimingCaps.NtpServers.AuthenticationOption - type: string - description: NTP authentication option - example: '["NONE"]' + TimingCapsNtpServersAuthenticationOption: + title: TimingCapsNtpServersAuthenticationOption enum: - NONE - SYMMETRIC_KEY - AUTO_KEY - TimingCaps.NtpServers.NtpServerAddrType: - title: TimingCaps.NtpServers.NtpServerAddrType type: string - description: Address type of NTP server - example: '["IP_ADDRESS"]' + description: NTP authentication option + example: + - NONE + TimingCapsNtpServersNtpServerAddrType: + title: TimingCapsNtpServersNtpServerAddrType enum: - IP_ADDRESS - DNS_NAME - TimingCaps.NtpServers: - title: TimingCaps.NtpServers + type: string + description: Address type of NTP server + example: + - IP_ADDRESS + TimingCapsNtpServers: + title: TimingCapsNtpServers required: - - authenticationKeyNum - - authenticationOption - - localPriority - - maxPollingInterval - - minPollingInterval - - ntpServerAddr - ntpServerAddrType + - ntpServerAddr + - minPollingInterval + - maxPollingInterval + - localPriority + - authenticationOption type: object properties: ntpServerAddrType: - $ref: '#/components/schemas/TimingCaps.NtpServers.NtpServerAddrType' + $ref: '#/components/schemas/TimingCapsNtpServersNtpServerAddrType' ntpServerAddr: type: string description: NTP server address - example: '["192.0.2.0"]' + example: + - 192.0.2.0 minPollingInterval: type: integer - description: - Minimum poll interval for NTP messages, in seconds as a power - of two. Range 3 to 17 + description: >- + Minimum poll interval for NTP messages, in seconds as a power of two. Range 3 to 17 + example: + - 3 maxPollingInterval: type: integer - description: - Maximum poll interval for NTP messages, in seconds as a power - of two. Range 3 to 17 + description: >- + Maximum poll interval for NTP messages, in seconds as a power of two. Range 3 to 17 + example: + - 17 localPriority: type: integer description: NTP server local priority + example: + - 1 authenticationOption: - $ref: '#/components/schemas/TimingCaps.NtpServers.AuthenticationOption' + $ref: '#/components/schemas/TimingCapsNtpServersAuthenticationOption' authenticationKeyNum: type: integer - description: Authentication key number + description: >- + Authentication key number. This configuration is valid and shall be present if authenticationOption is set to SYMMETRIC_KEY + example: + - 1 description: NTP server detail. - example: - ntpServerAddr: '["192.0.2.0"]' - maxPollingInterval: 5 - authenticationKeyNum: 2 - localPriority: 5 - authenticationOption: '["NONE"]' - ntpServerAddrType: '["IP_ADDRESS"]' - minPollingInterval: 1 TimingCaps_PtpMasters: title: TimingCaps_PtpMasters required: - - delayReqMaxRate - ptpMasterIpAddress - ptpMasterLocalPriority + - delayReqMaxRate type: object properties: ptpMasterIpAddress: type: string description: PTP Server (referred to as "master" in IEEE 1588-2019) IP Address - example: '["192.0.2.0"]' + example: + - 192.0.2.0 ptpMasterLocalPriority: type: integer - description: - PTP Server (referred to as "master" in IEEE 1588-2019 ) local - priority + description: >- + PTP Server (referred to as "master" in IEEE 1588-2019 ) local priority + example: + - 1 delayReqMaxRate: type: integer - description: - Acceptable maximum rate of the Delay_Req messages in packets - per second + description: >- + Acceptable maximum rate of the Delay_Req messages in packets per second + example: + - 10 description: NTP server detail. - example: - ptpMasterLocalPriority: 7 - ptpMasterIpAddress: '["192.0.2.0"]' - delayReqMaxRate: 9 - TimingCaps.TimeStamp: - title: TimingCaps.TimeStamp + TimingCapsTimeStamp: + title: TimingCapsTimeStamp required: - - nanoSeconds - seconds + - nanoSeconds type: object properties: seconds: type: integer - description: - The seconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 1577836800 nanoSeconds: type: integer - description: - The nanoseconds part of the time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: >- + The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC + example: + - 0 description: time - example: - seconds: 0 - nanoSeconds: 6 TimingCaps: title: TimingCaps type: object properties: timeStamp: - $ref: '#/components/schemas/TimingCaps.TimeStamp' + $ref: '#/components/schemas/TimingCapsTimeStamp' ntpServers: type: array - description: Available NTP servers items: - $ref: '#/components/schemas/TimingCaps.NtpServers' + $ref: '#/components/schemas/TimingCapsNtpServers' + description: Available NTP servers ptpMasters: type: array - description: - Number of available PTP Servers (referred to as "masters" in - IEEE 1588-2019) items: $ref: '#/components/schemas/TimingCaps_PtpMasters' - description: - This type represents the information provided by the MEC platform - in response to the Timing capabilities Query message. - example: - timeStamp: - seconds: 0 - nanoSeconds: 6 - ntpServers: - - ntpServerAddr: '["192.0.2.0"]' - maxPollingInterval: 5 - authenticationKeyNum: 2 - localPriority: 5 - authenticationOption: '["NONE"]' - ntpServerAddrType: '["IP_ADDRESS"]' - minPollingInterval: 1 - - ntpServerAddr: '["192.0.2.0"]' - maxPollingInterval: 5 - authenticationKeyNum: 2 - localPriority: 5 - authenticationOption: '["NONE"]' - ntpServerAddrType: '["IP_ADDRESS"]' - minPollingInterval: 1 - ptpMasters: - - ptpMasterLocalPriority: 7 - ptpMasterIpAddress: '["192.0.2.0"]' - delayReqMaxRate: 9 - - ptpMasterLocalPriority: 7 - ptpMasterIpAddress: '["192.0.2.0"]' - delayReqMaxRate: 9 + description: >- + Number of available PTP Servers (referred to as "masters" in IEEE 1588-2019) + description: >- + This type represents the information provided by the MEC platform in response to the Timing capabilities Query message. TrafficFilter: title: TrafficFilter type: object properties: srcAddress: type: array - description: - An IP address or a range of IP address. 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. items: type: string + description: >- + An IP address or a range of IP address. 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. dstAddress: type: array - description: - An IP address or a range of IP address. 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. items: type: string + description: >- + An IP address or a range of IP address. 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 - description: A port or a range of ports items: type: string + description: A port or a range of ports dstPort: type: array - description: A port or a range of ports items: type: string + description: A port or a range of ports protocol: type: array - description: Specify the protocol of the traffic filter items: type: string - token: + description: Specify the protocol of the traffic filter + tag: type: array - description: Used for token based traffic rule items: type: string + description: Used for tag based traffic rule srcTunnelAddress: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule tgtTunnelAddress: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule srcTunnelPort: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule dstTunnelPort: type: array - description: Used for GTP tunnel based traffic rule items: type: string + description: Used for GTP tunnel based traffic rule qCI: type: integer - description: - Used to match all packets that have the same Quality Class - Indicator (QCI). + description: >- + Used to match all packets that have the same Quality Class Indicator (QCI). + example: + - 1 dSCP: type: integer - description: - Used to match all IPv4 packets that have the same Differentiated - Services Code Point (DSCP) + description: >- + Used to match all IPv4 packets that have the same Differentiated Services Code Point (DSCP) + example: + - 0 tC: type: integer description: Used to match all IPv6 packets that have the same Traffic Class. + example: + - 1 description: This type represents the traffic filter. - example: - srcTunnelPort: - - srcTunnelPort - - srcTunnelPort - dstAddress: - - dstAddress - - dstAddress - srcAddress: - - srcAddress - - srcAddress - srcPort: - - srcPort - - srcPort - token: - - token - - token - tC: 5 - protocol: - - protocol - - protocol - dstTunnelPort: - - dstTunnelPort - - dstTunnelPort - dSCP: 1 - dstPort: - - dstPort - - dstPort - qCI: 6 - srcTunnelAddress: - - srcTunnelAddress - - srcTunnelAddress - tgtTunnelAddress: - - tgtTunnelAddress - - tgtTunnelAddress - TrafficRule.Action: - title: TrafficRule.Action - type: string - description: - The action of the MEC host data plane when a packet matches the - trafficFilter - example: '["DROP"]' + TrafficRuleAction: + title: TrafficRuleAction enum: - DROP - FORWARD_DECAPSULATED @@ -1721,162 +2045,80 @@ components: - PASSTHROUGH - DUPLICATE_DECAPSULATED - DUPLICATE_ENCAPSULATED - TrafficRule.FilterType: - title: TrafficRule.FilterType type: string - description: - Definition of filter per FLOW or PACKET. If flow the filter match - UE->EPC packet and the reverse packet is handled in the same context - example: '["FLOW"]' + description: >- + The action of the MEC host data plane when a packet matches the trafficFilter + example: + - DROP + TrafficRuleFilterType: + title: TrafficRuleFilterType enum: - FLOW - PACKET - TrafficRule.State: - title: TrafficRule.State type: string - description: - Contains the traffic rule state. This attribute may be updated - using HTTP PUT method - example: '["ACTIVE"]' + description: >- + Definition of filter per FLOW or PACKET. If flow the filter match UE->EPC packet and the reverse packet is handled in the same context + example: + - FLOW + TrafficRuleState: + title: TrafficRuleState enum: - ACTIVE - INACTIVE + type: string + description: >- + Contains the traffic rule state. This attribute may be updated using HTTP PUT method + example: + - ACTIVE TrafficRule: title: TrafficRule required: - - action + - trafficRuleId - filterType - priority - - state - trafficFilter - - trafficRuleId + - action + - state type: object properties: trafficRuleId: type: string description: Identify the traffic rule. - example: '["TrafficRule1"]' + example: + - TrafficRule1 filterType: - $ref: '#/components/schemas/TrafficRule.FilterType' + $ref: '#/components/schemas/TrafficRuleFilterType' priority: type: integer - description: - Priority of this traffic rule within the range 0 to 255. If - traffic rules conflict, 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. + description: >- + Priority of this traffic rule within the range 0 to 255. If traffic rules conflict, 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. + example: + - 1 trafficFilter: type: array items: $ref: '#/components/schemas/TrafficFilter' + description: '' action: - $ref: '#/components/schemas/TrafficRule.Action' + $ref: '#/components/schemas/TrafficRuleAction' dstInterface: - maxItems: 2 type: array items: $ref: '#/components/schemas/DestinationInterface' + maxItems: 2 state: - $ref: '#/components/schemas/TrafficRule.State' + $ref: '#/components/schemas/TrafficRuleState' description: This type represents the general information of a traffic rule. - example: - action: '["DROP"]' - trafficRuleId: '["TrafficRule1"]' - dstInterface: - - interfaceType: '["TUNNEL"]' - dstIpAddress: '["192.0.2.0"]' - srcMacAddress: '["02-00-00-00-00-00"]' - tunnelInfo: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' - dstMacAddress: '["02-00-00-00-00-00"]' - - interfaceType: '["TUNNEL"]' - dstIpAddress: '["192.0.2.0"]' - srcMacAddress: '["02-00-00-00-00-00"]' - tunnelInfo: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' - dstMacAddress: '["02-00-00-00-00-00"]' - state: '["ACTIVE"]' - filterType: '["FLOW"]' - priority: 0 - trafficFilter: - - srcTunnelPort: - - srcTunnelPort - - srcTunnelPort - dstAddress: - - dstAddress - - dstAddress - srcAddress: - - srcAddress - - srcAddress - srcPort: - - srcPort - - srcPort - token: - - token - - token - tC: 5 - protocol: - - protocol - - protocol - dstTunnelPort: - - dstTunnelPort - - dstTunnelPort - dSCP: 1 - dstPort: - - dstPort - - dstPort - qCI: 6 - srcTunnelAddress: - - srcTunnelAddress - - srcTunnelAddress - tgtTunnelAddress: - - tgtTunnelAddress - - tgtTunnelAddress - - srcTunnelPort: - - srcTunnelPort - - srcTunnelPort - dstAddress: - - dstAddress - - dstAddress - srcAddress: - - srcAddress - - srcAddress - srcPort: - - srcPort - - srcPort - token: - - token - - token - tC: 5 - protocol: - - protocol - - protocol - dstTunnelPort: - - dstTunnelPort - - dstTunnelPort - dSCP: 1 - dstPort: - - dstPort - - dstPort - qCI: 6 - srcTunnelAddress: - - srcTunnelAddress - - srcTunnelAddress - tgtTunnelAddress: - - tgtTunnelAddress - - tgtTunnelAddress - TunnelInfo.TunnelType: - title: TunnelInfo.TunnelType - type: string - description: This type represents the tunnel information. - example: '["GTP_U"]' + x-etsi-notes: "NOTE 1:\tValue indicates the priority in descending order, i.e. with 0 as the highest priority and 255 as the lowest priority.\nNOTE 2:\tSome applications (like inline/tap) require two interfaces. The first interface in the case of inline/tap is on the client (e.g. UE) side and the second on the core network (e.g. EPC) side." + TunnelInfoTunnelType: + title: TunnelInfoTunnelType enum: - GTP_U - GRE + type: string + description: This type represents the tunnel information. + example: + - GTP_U TunnelInfo: title: TunnelInfo required: @@ -1884,35 +2126,364 @@ components: type: object properties: tunnelType: - $ref: '#/components/schemas/TunnelInfo.TunnelType' + $ref: '#/components/schemas/TunnelInfoTunnelType' tunnelDstAddress: type: string description: Destination address of the tunnel - example: '["?"]' + example: + - '192.127.4.100/32' tunnelSrcAddress: type: string description: Source address of the tunnel - example: '["?"]' + example: + - '192.127.4.101/32' description: This type represents the tunnel information. - example: - tunnelSrcAddress: '["?"]' - tunnelType: '["GTP_U"]' - tunnelDstAddress: '["?"]' TimeSourceStatus: title: TimeSourceStatus - type: string - description: - Platform Time Source status. 1 = TRACEABLE - time source is locked - to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the - UTC time source - example: '["TRACEABLE"]' enum: - TRACEABLE - NONTRACEABLE + type: string + description: >- + Platform Time Source status. 1 = TRACEABLE - time source is locked to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the UTC time source + example: + - TRACEABLE + CategoryRef: + title: CategoryRef + required: + - href + - id + - name + - version + type: object + properties: + href: + type: string + description: Reference of the catalogue + example: + - /example/catalogue1 + id: + type: string + description: Unique identifier of the category + example: + - id12345 + name: + type: string + description: >- + Name of the category, example values include RNI, Location & Bandwidth Management + example: + - RNI + version: + type: string + description: Category version + example: + - version1 + description: This type represents the category reference + EndPointInfoAddress: + title: EndPointInfoAddress + required: + - host + - port + type: object + properties: + host: + type: string + description: Host portion of the address + example: + - 192.0.2.0 + port: + type: integer + description: Port portion of the address + example: + - 8080 + description: A IP address and port pair + EndPointInfoAddresses: + title: EndPointInfoAddresses + required: + - addresses + type: object + properties: + addresses: + type: array + items: + $ref: '#/components/schemas/EndPointInfoAddress' + description: >- + Entry point information of the service as one or more pairs of IP address and port. See note. + description: This type represents information about a transport endpoint. + EndPointInfoAlternative: + title: EndPointInfoAlternative + required: + - alternative + type: object + properties: + alternative: + type: object + description: >- + Entry point information of the service in a format defined by an implementation, or in an external specification. See note. + description: This type represents information about a transport endpoint. + EndPointInfoUris: + title: EndPointInfoUris + required: + - uris + type: object + properties: + uris: + type: array + items: + type: string + description: >- + Entry point information of the service as string, formatted according to URI syntax + description: This type represents information about a transport endpoint. + EndPointInfoFqdn: + title: EndPointInfoFqdn + required: + - fqdn + type: object + properties: + fqdn: + type: array + items: + type: string + description: Fully Qualified Domain Name of the service. See note. + description: 'This type represents information about a transport endpoint. ' + + Not_specified: + description: 'Not_specified' + + ServiceDependency: + properties: + requestedPermissions: + 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. + items: + $ref: '#/components/schemas/Not_specified' + minItems: 0 + type: array + serCategory: + $ref: '#/components/schemas/CategoryRef' + serName: + description: 'The name of the service, for example, RNIS, LocationService, etc.' + type: string + serTransportDependencies: + description: >- + Indicates transport and serialization format dependencies of consuming the service. Defaults to REST + JSON if absent. See note. + items: + $ref: '#/components/schemas/TransportDependency' + minItems: 0 + type: array + version: + description: The version of the service. + type: string + required: + - serName + - version + type: object + x-etsi-notes: "NOTE:\tThis attribute indicates groups of transport bindings that a service-consuming MEC application supports for the consumption of the MEC service defined by this ServiceDependency structure. If at least one of the indicated groups is supported by the service it may be consumed by the application." + TransportDependency: + properties: + labels: + description: >- + Set of labels that allow to define groups of transport bindings. The mechanism of the grouping is defined below this table. + items: + type: string + minItems: 1 + type: array + serializers: + description: >- + Information about the serializers in this transport binding, as defined in the SerializerType type in ETSI GS MEC 011 [i.4]. Support for at least one of the entries is required in conjunction with the transport. + items: + $ref: '#/components/schemas/SerializerType' + minItems: 1 + type: array + transport: + $ref: '#/components/schemas/TransportDescriptor' + required: + - transport + - serializers + - labels + type: object + TransportDescriptor: + properties: + protocol: + description: >- + The name of the protocol used. Shall be set to "HTTP" for a REST API. + type: string + security: + $ref: '#/components/schemas/SecurityInfo' + type: + $ref: '#/components/schemas/TransportType' + version: + description: The version of the protocol used. + type: string + required: + - type + - protocol + - version + - security + type: object + SerializerType: + title: SerializerType + enum: + - JSON + - XML + - PROTOBUF3 + type: string + description: The enumeration represents types of serializers + example: + - JSON + SecurityInfo: + title: SecurityInfo + type: object + properties: + oAuth2Info: + $ref: '#/components/schemas/SecurityInfoOAuth2Info' + description: This type represents security information related to a transport + SecurityInfoOAuth2Info: + title: SecurityInfoOAuth2Info + required: + - grantTypes + - tokenEndpoint + type: object + properties: + grantTypes: + maxItems: 4 + minItems: 1 + type: array + items: + $ref: '#/components/schemas/SecurityInfoOAuth2InfoGrantType' + description: List of supported OAuth 2.0 grant types. + tokenEndpoint: + type: string + description: The token endpoint + example: + - /mecSerMgmtApi/security/TokenEndPoint + description: Parameters related to use of OAuth 2.0 + SecurityInfoOAuth2InfoGrantType: + title: SecurityInfoOAuth2InfoGrantType + enum: + - OAUTH2_AUTHORIZATION_CODE + - OAUTH2_IMPLICIT_GRANT + - OAUTH2_RESOURCE_OWNER + - OAUTH2_CLIENT_CREDENTIALS + type: string + description: OAuth 2.0 grant type + example: + - OAUTH2_CLIENT_CREDENTIALS + TransportType: + title: TransportType + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + type: string + description: The enumeration TransportType represents types of transports + example: + - REST_HTTP + FeatureDependency: + properties: + featureName: + description: 'The name of the feature, for example, UserApps, UEIdentity, etc.' + type: string + version: + description: The version of the feature. + type: string + required: + - featureName + - version + type: object + AppProfile: + type: object + required: + - easId + - endPt + - acIds + - scheds + - permLvl + - easFeats + - svcContSupp + - appLocs + properties: + easId: + description: The identifier of the EAS + type: string + example: + - appName + endPt: + description: The version of the feature. + oneOf: + - $ref: '#/components/schemas/EndPointInfoUris' + - $ref: '#/components/schemas/EndPointInfoFqdn' + - $ref: '#/components/schemas/EndPointInfoAddresses' + - $ref: '#/components/schemas/EndPointInfoAlternative' + acIds: + type: array + items: + type: string + minItems: 1 + description: Identities of the Application Clients that can be served by the EAS + provId: + type: string + description: Identifier of the ASP that provides the EAS. + example: + - appProvider1 + type: + description: The category or type of EAS. + type: string + scheds: + type: array + items: + type: string + minItems: 1 + description: The availability schedule of the EAS. + svcArea: + type: string + description: >- + The list of geographical and topological areas that the EAS serves. ACs in the UE that are outside the area will not be served. + svcKpi: + type: string + description: Service characteristics provided by the EAS. + permLvl: + type: array + items: + type: string + minItems: 1 + description: level of service permissions supported by the EAS. + easFeats: + type: array + items: + type: string + minItems: 1 + description: Service features supported by the EAS. + svcContSupp: + type: array + items: + type: string + minItems: 1 + description: The ACR scenarios supported by the EAS for service continuity. + appLocs: + type: array + items: + type: string + minItems: 1 + description: >- + List of DNAI(s) and the N6 traffic information associated with the EAS. + avlRep: + type: integer + description: >- + The period indicating to the EES, how often the EES needs to check the EAS's availability after a successful registration. + example: + - 1577836800 + status: + type: string + description: 'EAS status information. ' requestBodies: AppTerminationNotification: content: application/json: schema: $ref: '#/components/schemas/AppTerminationNotification' - required: true + required: true \ No newline at end of file diff --git a/config/api/service-mgmt.yaml b/config/api/service-mgmt.yaml index dcd5f19..b313a37 100644 --- a/config/api/service-mgmt.yaml +++ b/config/api/service-mgmt.yaml @@ -1,685 +1,1827 @@ openapi: 3.0.0 -servers: - - url: 'https://localhost/sandboxname/mec_service_mgmt/v1' info: title: MEC Service Management API - version: 2.2.1 - description: - 'The ETSI MEC ISG MEC011 MEC Service Management API described using OpenAPI. -

**Note**
MEC Sandbox supports all Service Management API endpoints; complete details on Service Management API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf).' - license: - name: BSD-3-Clause - url: 'https://forge.etsi.org/legal-matters' + description: The ETSI MEC ISG MEC011 MEC Service Management API described using + OpenAPI contact: email: cti_support@etsi.org + license: + name: BSD-3-Clause + url: https://forge.etsi.org/legal-matters + version: 3.1.1 externalDocs: - description: 'ETSI GS MEC011 Application Enablement API, V2.2.1' - url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.02.01_60/gs_MEC011v020201p.pdf + description: "ETSI GS MEC011 Application Enablement API, V3.1.1" + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf +servers: +- url: https://localhost/sandboxname/mec_service_mgmt/v1 tags: - - name: mec_service_mgmt +- name: appSubscriptions +- name: appServices +- name: services +- name: transports +- name: callbacks +- name: individualMECservice paths: - '/services': + /applications/{appInstanceId}/subscriptions: get: - description: >- - This method retrieves information about a list of mecService resources. - This method is typically used in "service availability query" procedure - operationId: Services_GET tags: - - mec_service_mgmt + - appSubscriptions + summary: Get subscriptions + description: "The GET method may be used to request information about all subscriptions\ + \ for this requestor. Upon success, the response contains entity body with\ + \ all the subscriptions for the requestor." + operationId: ApplicationsSubscriptions_GET + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: "Upon success, a response message content containing the list\ + \ of links to the requested subscriptions is returned." + content: + application/json: + schema: + $ref: '#/components/schemas/MecServiceMgmtApiSubscriptionLinkList' + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + post: + tags: + - appSubscriptions + summary: Create subscription + description: "The POST method may be used to create a new subscription. One\ + \ example use case is to create a new subscription to the MEC service availability\ + \ notifications. Upon success, the response contains entity body describing\ + \ the created subscription." + operationId: ApplicationsSubscriptions_POST parameters: - - $ref: '#/components/parameters/Query.SerInstanceId' - - $ref: '#/components/parameters/Query.SerName' - - $ref: '#/components/parameters/Query.SerCategoryId' - - $ref: '#/components/parameters/Query.ConsumedLocalOnly' - - $ref: '#/components/parameters/Query.IsLocal' - - $ref: '#/components/parameters/Query.LocalityType' + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + requestBody: + description: Message content in the request contains a subscription to the + MEC application termination notifications that is to be created. + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + required: true responses: - '200': - $ref: '#/components/responses/Services200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '414': - $ref: '#/components/responses/414' - '/services/{serviceId}': - parameters: - - $ref: '#/components/parameters/Path.ServiceId' + "201": + description: Entity body in the request contains a subscription to the MEC + service availability notifications that is to be created. + headers: + location: + description: The resource URI of the created resource + style: simple + explode: false + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + callbacks: + ServiceAvailailityNotification: + '{$request.body#/callbackReference}': + post: + tags: + - callbacks + summary: Create callback + description: |- + 'Represents the service availability information that is used in the following cases + when the MEC platform announces the newly available + services to the authorized relevant MEC applications (e.g. the applications that indicate the services as "optional" or "required") that are subscribed to the corresponding service availability notifications when the MEC platform notifies the authorized relevant applications that are subscribed to the corresponding service availability notifications about the service availability changes.' + operationId: ServiceAvailabilityNotification_POST + requestBody: + $ref: '#/components/requestBodies/ServiceAvailabilityNotification' + responses: + "200": + description: "Expected responses from callback consumer, if it accepts\ + \ the callback" + deprecated: false + /applications/{appInstanceId}/subscriptions/{subscriptionId}: get: - description: >- - This method retrieves information about a mecService resource. This - method is typically used in "service availability query" procedure - operationId: ServicesServiceId_GET tags: - - mec_service_mgmt + - appSubscriptions + summary: Get subscription + description: "The GET method requests information about a subscription for this\ + \ requestor. Upon success, the response contains message content with the\ + \ subscription for the requestor." + operationId: ApplicationsSubscription_GET + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string responses: - '200': - $ref: '#/components/responses/ServicesServiceId200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '/applications/{appInstanceId}/services': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' + "200": + description: "Upon success, a response message content containing the requested\ + \ subscription is returned." + content: + application/json: + schema: + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + delete: + tags: + - appSubscriptions + summary: delete subscription + description: This method deletes a mecSrvMgmtSubscription. This method is typically + used in "Unsubscribing from service availability event notifications" procedure. + operationId: ApplicationsSubscription_DELETE + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string + responses: + "204": + description: No Content + content: {} + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /applications/{appInstanceId}/services: get: - description: >- - This method retrieves information about a list of mecService resources. + tags: + - appServices + summary: get services + description: This method retrieves information about a list of mecService resources. This method is typically used in "service availability query" procedure operationId: AppServices_GET - tags: - - mec_service_mgmt parameters: - - $ref: '#/components/parameters/Query.SerInstanceId' - - $ref: '#/components/parameters/Query.SerName' - - $ref: '#/components/parameters/Query.SerCategoryId' - - $ref: '#/components/parameters/Query.ConsumedLocalOnly' - - $ref: '#/components/parameters/Query.IsLocal' - - $ref: '#/components/parameters/Query.LocalityType' + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: ser_instance_id + in: query + description: A MEC application instance may use multiple ser_instance_ids + as an input parameter to query the availability of a list of MEC service + instances. Either "ser_instance_id" or "ser_name" or "ser_category_id" or + none of them shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_name + in: query + description: A MEC application instance may use multiple ser_names as an input + parameter to query the availability of a list of MEC service instances. + Either "ser_instance_id" or "ser_name" or "ser_category_id" or none of them + shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_category_id + in: query + description: A MEC application instance may use ser_category_id as an input + parameter to query the availability of a list of MEC service instances in + a serCategory. Either "ser_instance_id" or "ser_name" or "ser_category_id" + or none of them shall be present. + required: false + style: form + explode: true + schema: + type: string + - name: consumed_local_only + in: query + description: Indicate whether the service can only be consumed by the MEC applications + located in the same locality (as defined by scopeOfLocality) as this service + instance. + required: false + style: form + explode: true + schema: + type: boolean + - name: is_local + in: query + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + required: false + style: form + explode: true + schema: + type: boolean + - name: scope_of_locality + in: query + description: A MEC application instance may use scope_of_locality as an input parameter + to query the availability of a list of MEC service instances with a certain + scope of locality. + required: false + style: form + explode: true + schema: + type: string responses: - '200': - $ref: '#/components/responses/Services200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '414': - $ref: '#/components/responses/414' + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + type: array + example: + - - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + items: + $ref: '#/components/schemas/ServiceInfo' + x-content-type: application/json + example: + ServiceInfoList: + value: + - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + - serInstanceId: ServiceInstance345 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.1 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "414": + description: It is used to indicate that the server is refusing to process + the request because the request URI is longer than the server is willing + or able to process. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false post: - description: >- - This method is used to create a mecService resource. This method is - typically used in "service availability update and new service - registration" procedure - operationId: AppServices_POST tags: - - mec_service_mgmt - responses: - '201': - $ref: '#/components/responses/Services201' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' + - appServices + summary: create service + description: This method is used to create a mecService resource. This method + is typically used in "service availability update and new service registration" + procedure + operationId: AppServices_POST + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string requestBody: - $ref: '#/components/requestBodies/ServicesPost' - '/applications/{appInstanceId}/services/{serviceId}': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' - - $ref: '#/components/parameters/Path.ServiceId' + description: New ServiceInfo with updated "state" is included as entity body + of the request + content: + application/json: + schema: + $ref: '#/components/schemas/appInstanceId_services_body' + required: true + responses: + "201": + description: "Upon success, the HTTP response shall include a Location HTTP\ + \ header that contains the resource URI of the created resource." + headers: + location: + description: The resource URI of the created resource + style: simple + explode: false + content: + text/plain: + schema: + type: string + description: The resource URI of the created resource + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /applications/{appInstanceId}/services/{serviceId}: get: - description: >- - This method retrieves information about a mecService resource. This - method is typically used in "service availability query" procedure - operationId: AppServicesServiceId_GET tags: - - mec_service_mgmt + - appServices + summary: get service + description: This method retrieves information about a mecService resource. + This method is typically used in "service availability query" procedure + operationId: AppServicesServiceId_GET + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: serviceId + in: path + description: Represents a MEC service instance (see note). + required: true + style: simple + explode: false + schema: + type: string responses: - '200': - $ref: '#/components/responses/ServicesServiceId200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false put: + tags: + - appServices + summary: update service description: This method updates the information about a mecService resource operationId: AppServicesServiceId_PUT - tags: - - mec_service_mgmt - responses: - '200': - $ref: '#/components/responses/ServicesServiceId200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '412': - $ref: '#/components/responses/412' + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: serviceId + in: path + description: Represents a MEC service instance. (see note) + required: true + style: simple + explode: false + schema: + type: string requestBody: - $ref: '#/components/requestBodies/ServicesServiceId' + description: New ServiceInfo with updated "state" is included as entity body + of the request + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + required: true + responses: + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "412": + description: "Precondition Failed. It is used when a condition has failed\ + \ during conditional requests, e.g. when using ETags to avoid write conflicts." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false delete: - description: >- - This method deletes a mecService resource. This method is typically used in the service deregistration procedure. - operationId: AppServicesServiceId_DELETE tags: - - mec_service_mgmt + - appServices + summary: delete service + description: 'This method deletes a mecService resource. This method is typically + used in the service deregistration procedure. ' + operationId: AppServicesServiceId_DELETE + parameters: + - name: appInstanceId + in: path + description: Represents a MEC application instance. Note that the appInstanceId + is allocated by the MEC platform manager. + required: true + style: simple + explode: false + schema: + type: string + - name: serviceId + in: path + description: Represents a MEC service instance. (see note) + required: true + style: simple + explode: false + schema: + type: string responses: - '204': + "204": description: No Content - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '/applications/{appInstanceId}/subscriptions': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' + content: {} + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /services: get: - description: >- - The GET method may be used to request information about all - subscriptions for this requestor. Upon success, the response contains - entity body with all the subscriptions for the requestor. - operationId: ApplicationsSubscriptions_GET tags: - - mec_service_mgmt + - services + summary: get services + description: This method retrieves information about a list of mecService resources. + This method is typically used in "service availability query" procedure + operationId: Services_GET + parameters: + - name: ser_instance_id + in: query + description: A MEC application instance may use multiple ser_instance_ids + as an input parameter to query the availability of a list of MEC service + instances. Either "ser_instance_id" or "ser_name" or "ser_category_id" or + none of them shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_name + in: query + description: A MEC application instance may use multiple ser_names as an input + parameter to query the availability of a list of MEC service instances. + Either "ser_instance_id" or "ser_name" or "ser_category_id" or none of them + shall be present. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: ser_category_id + in: query + description: A MEC application instance may use ser_category_id as an input + parameter to query the availability of a list of MEC service instances in + a serCategory. Either "ser_instance_id" or "ser_name" or "ser_category_id" + or none of them shall be present. + required: false + style: form + explode: true + schema: + type: string + - name: consumed_local_only + in: query + description: Indicate whether the service can only be consumed by the MEC applications + located in the same locality (as defined by scopeOfLocality) as this service + instance. + required: false + style: form + explode: true + schema: + type: boolean + - name: is_local + in: query + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + required: false + style: form + explode: true + schema: + type: boolean + - name: scope_of_locality + in: query + description: A MEC application instance may use scope_of_locality as an input parameter + to query the availability of a list of MEC service instances with a certain + scope of locality. + required: false + style: form + explode: true + schema: + type: string responses: - '200': - $ref: '#/components/responses/ApplicationsSubscriptions200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - post: - description: >- - The POST method may be used to create a new subscription. One example - use case is to create a new subscription to the MEC service - availability notifications. Upon success, the response contains entity - body describing the created subscription. - operationId: ApplicationsSubscriptions_POST + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + type: array + example: + - - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + items: + $ref: '#/components/schemas/ServiceInfo' + x-content-type: application/json + example: + ServiceInfoList: + value: + - serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.0 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + - serInstanceId: ServiceInstance345 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + addresses: + - host: 192.0.2.1 + port: 8080 + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "414": + description: It is used to indicate that the server is refusing to process + the request because the request URI is longer than the server is willing + or able to process. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /services/{serviceId}: + get: tags: - - mec_service_mgmt + - services + summary: get service + description: This method retrieves information about a mecService resource. + This method is typically used in "service availability query" procedure + operationId: ServicesServiceId_GET + parameters: + - name: serviceId + in: path + description: Represents a MEC service instance. (see note) + required: true + style: simple + explode: false + schema: + type: string + x-etsi-notes: "NOTE:\t serviceId corresponds to serInstanceId" responses: - '201': - $ref: '#/components/responses/ApplicationsSubscriptions201' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - requestBody: - $ref: '#/components/requestBodies/ApplicationsSubscriptions' - callbacks: - serviceAvailabilityNotification: - $ref: '#/components/callbacks/ServiceAvailabilityNotification' - '/applications/{appInstanceId}/subscriptions/{subscriptionId}': - parameters: - - $ref: '#/components/parameters/Path.AppInstanceId' - - $ref: '#/components/parameters/Path.SubscriptionId' + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceInfo' + example: + ServiceInfo: + value: + serInstanceId: ServiceInstance123 + serName: ExampleService + serCategory: + href: catItem1 + id: id12345 + name: RNI + version: version1 + version: ServiceVersion1 + state: ACTIVE + transportInfo: + id: TransId12345 + name: REST + description: REST API + type: REST_HTTP + protocol: HTTP + version: "2.0" + endpoint: + uris: + - /mecSerMgmtApi/service/EntryPoint + security: + oAuth2Info: + grantTypes: + - OAUTH2_CLIENT_CREDENTIALS + tokenEndpoint: /mecSerMgmtApi/security/TokenEndPoint + serializer: JSON + _links: + self: + href: http://example.com/ + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /transports: get: - description: >- - The GET method requests information about a subscription for this - requestor. Upon success, the response contains entity body with the - subscription for the requestor. - operationId: ApplicationsSubscription_GET tags: - - mec_service_mgmt + - transports + summary: Get transports + description: This method retrieves information about a list of available transports. + This method is typically used by a service-producing application to discover + transports provided by the MEC platform in the "transport information query" + procedure + operationId: Transports_GET + parameters: [] responses: - '200': - $ref: '#/components/responses/ApplicationsSubscription200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - delete: - description: >- - This method deletes a mecSrvMgmtSubscription. This method is typically used - in "Unsubscribing from service availability event notifications" - procedure. - operationId: ApplicationsSubscription_DELETE + "200": + description: It is used to indicate nonspecific success. The response messages + content contains a representation of the resource. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TransportInfo' + x-content-type: application/json + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + text/plain: + schema: + type: object + description: Empty schema + deprecated: false + /resource_uri_allocated_by_MEC_platform: + get: tags: - - mec_service_mgmt + - individualMECservice + summary: get mecServiceLiveness + description: This method retrieves information about an "Individual mecServiceLiveness" + resource + operationId: get_individual_MEC_service responses: - '204': - description: No Content - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '/transports': - get: - description: >- - This method retrieves information about a list of available transports. - This method is typically used by a service-producing application to - discover transports provided by the MEC platform in the - "transport information query" procedure - operationId: Transports_GET + "200": + description: It is used to indicate nonspecific success. The response message + content contains a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceLivenessInfo' + "400": + description: "It is used to indicate that incorrect parameters were passed\ + \ to the request. In the returned ProblemDetails structure, the \"detail\"\ + \ attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: The operation is not allowed given the current status of the + resource. More information shall be provided in the "detail" attribute + of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "It is used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI. In the returned ProblemDetails structure, the\ + \ \"detail\" attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + patch: tags: - - mec_service_mgmt + - individualMECservice + summary: Update mecServiceLiveness + description: This method updates a resource on top of the existing resource + state with partial changes described by the client. + operationId: patch_individual_MEC_service + requestBody: + description: It contains an update of the liveness state. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceLivenessUpdate' + required: true responses: - '200': - $ref: '#/components/responses/Transports200' - '400': - $ref: '#/components/responses/400' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' + "200": + description: "Upon success, a response message content is returned containing\ + \ the updated liveness interval value of the service Instance." + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceLivenessInfo' + "204": + description: Successful response sent when there is no need to provide a + new liveness interval value to the service Instance. + content: {} + "400": + description: "It is used to indicate that incorrect parameters were passed\ + \ to the request. In the returned ProblemDetails structure, the \"detail\"\ + \ attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: The operation is not allowed given the current status of the + resource. More information shall be provided in the "detail" attribute + of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "It is used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI. In the returned ProblemDetails structure, the\ + \ \"detail\" attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "409": + description: The operation is not allowed due to a conflict with the state + of the resource. The MEC platform shall respond with this code if the + service instance is in "INACTIVE" state. More information shall be provided + in the "detail" attribute of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "It is used when a condition has failed during conditional\ + \ requests, e.g. when using ETags to avoid write conflicts. In the returned\ + \ ProblemDetails structure, the \"detail\" attribute should convey more\ + \ information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' components: schemas: CategoryRef: - description: This type represents the category reference - type: object + title: CategoryRef required: - - href - - id - - name - - version + - href + - id + - name + - version + type: object properties: href: - description: Reference of the catalogue type: string - format: uri + description: Reference of the catalogue + example: "[\"/example/catalogue1\"]" id: - description: Unique identifier of the category type: string + description: Unique identifier of the category + example: "[\"id12345\"]" name: - description: Name of the category, example values include RNI, Location & Bandwidth Management type: string + description: "Name of the category, example values include RNI, Location\ + \ & Bandwidth Management" + example: "[\"RNI\"]" version: - description: Category version type: string - CategoryRefs: - description: Categories of services about which to report events. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/CategoryRef' - EndPointInfoAddresses: - description: >- - Entry point information of the service as one or more pairs of IP - address and port + description: Category version + example: "[\"version1\"]" + description: This type represents the category reference + example: + name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + EndPointInfo.Address: + title: EndPointInfo.Address + required: + - host + - port type: object + properties: + host: + type: string + description: Host portion of the address + example: "[\"192.0.2.0\"]" + port: + type: integer + description: Port portion of the address + description: A IP address and port pair + EndPointInfo.Addresses: + title: EndPointInfo.Addresses required: - - addresses + - addresses + type: object properties: addresses: type: array - minItems: 0 + description: Entry point information of the service as one or more pairs + of IP address and port. See note. items: - description: A IP address and port pair - type: object - required: - - host - - port - properties: - host: - description: Host portion of the address - type: string - port: - description: Port portion of the address - type: integer - format: uint32 - EndPointInfoAlternative: - description: >- - Entry point information of the service in a format defined by an - implementation, or in an external specification. - type: object + $ref: '#/components/schemas/EndPointInfo.Address' + description: This type represents information about a transport endpoint. + EndPointInfo.Alternative: + title: EndPointInfo.Alternative required: - - alternative + - alternative + type: object properties: alternative: type: object - EndPointInfoUris: - description: >- - Entry point information of the service as string, formatted according to - URI syntax - type: object + description: "Entry point information of the service in a format defined\ + \ by an implementation, or in an external specification. See note." + description: This type represents information about a transport endpoint. + EndPointInfo.Uris: + title: EndPointInfo.Uris required: - - uris + - uris + type: object properties: uris: type: array - minItems: 0 + description: "Entry point information of the service as string, formatted\ + \ according to URI syntax" + items: + type: string + description: This type represents information about a transport endpoint. + EndPointInfo.Fqdn: + title: EndPointInfo.Fqdn + required: + - fqdn + type: object + properties: + fqdn: + type: array + description: Fully Qualified Domain Name of the service. See note. items: - description: Entry point information of the service type: string - format: uri + description: 'This type represents information about a transport endpoint. ' LinkType: - description: This type represents a type of link and may be referenced from data structures + title: LinkType type: object properties: href: - description: URI referring to a resource type: string - format: uri - example: '/mecSerMgmtApi/example' - SubscriptionLinkList: - description: >- - This type represents a list of links related to currently existing - subscriptions for a MEC application instance. This information - is returned when sending a request to receive current subscriptions. + description: URI referring to a resource + example: "[\"/mecSerMgmtApi/example\"]" + description: This type represents a type of link and may be referenced from + data structures + example: + href: "[\"/mecSerMgmtApi/example\"]" + MecServiceMgmtApiSubscriptionLinkList.Links: + title: MecServiceMgmtApiSubscriptionLinkList.Links + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + subscriptions: + type: array + description: The MEC application instance's subscriptions + items: + $ref: '#/components/schemas/MecServiceMgmtApiSubscriptionLinkList.Subscription' + description: Self-referring URI. + example: + subscriptions: + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + self: + href: "[\"/mecSerMgmtApi/example\"]" + MecServiceMgmtApiSubscriptionLinkList.Subscription: + title: MecServiceMgmtApiSubscriptionLinkList.Subscription + required: + - href + - rel type: object + properties: + href: + type: string + description: URI referring to a resource + example: "[\"/mecSerMgmtApi/example\"]" + rel: + type: string + description: The value shall be se to SerAvailabilityNotificationSubscription. + description: A link to a subscription. + example: + rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + MecServiceMgmtApiSubscriptionLinkList: + title: MecServiceMgmtApiSubscriptionLinkList required: - - _links + - _links + type: object properties: _links: - description: Self-referring URI. - type: object - required: - - self - properties: - self: - $ref: '#/components/schemas/LinkType' - subscriptions: - description: The MEC application instance's subscriptions - type: array - items: - description: A link to a subscription. - type: object - required: - - href - - subscriptionType - properties: - href: - description: URI referring to a resource - type: string - format: uri - subscriptionType: - description: >- - Type of the subscription. The values are as defined in - the "subscriptionType" attribute for each different Mp1 - event subscription data type. - type: string + $ref: '#/components/schemas/MecServiceMgmtApiSubscriptionLinkList.Links' + description: This type represents a list of links related to currently existing + subscriptions for a MEC application instance. This information is returned + when sending a request to receive current subscriptions. + example: + _links: + subscriptions: + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + - rel: rel + href: "[\"/mecSerMgmtApi/example\"]" + self: + href: "[\"/mecSerMgmtApi/example\"]" ProblemDetails: + title: ProblemDetails type: object properties: type: type: string - format: uri - description: >- - A URI reference according to IETF RFC 3986 that identifies the problem - type + description: A URI reference according to IETF RFC 3986 that identifies + the problem type title: type: string - description: 'A short, human-readable summary of the problem type' + description: "A short, human-readable summary of the problem type" status: type: integer - format: uint32 description: The HTTP status code for this occurrence of the problem detail: type: string - description: A human-readable explanation specific to this occurrence of the problem + description: A human-readable explanation specific to this occurrence of + the problem instance: type: string - format: uri - description: A URI reference that identifies the specific occurrence of the problem - required: - - status - - detail - GrantType: - description: OAuth 2.0 grant type + description: A URI reference that identifies the specific occurrence of + the problem + SecurityInfo.OAuth2Info.GrantType: + title: SecurityInfo.OAuth2Info.GrantType type: string + description: OAuth 2.0 grant type + example: "[\"OAUTH2_CLIENT_CREDENTIALS\"]" enum: - - OAUTH2_AUTHORIZATION_CODE - - OAUTH2_IMPLICIT_GRANT - - OAUTH2_RESOURCE_OWNER - - OAUTH2_CLIENT_CREDENTIALS - example: 'OAUTH2_CLIENT_CREDENTIALS' - OAuth2Info: - description: Parameters related to use of OAuth 2.0 - type: object + - OAUTH2_AUTHORIZATION_CODE + - OAUTH2_IMPLICIT_GRANT + - OAUTH2_RESOURCE_OWNER + - OAUTH2_CLIENT_CREDENTIALS + SecurityInfo.OAuth2Info: + title: SecurityInfo.OAuth2Info required: - - grantTypes - - tokenEndpoint + - grantTypes + - tokenEndpoint + type: object properties: grantTypes: - description: >- - List of supported OAuth 2.0 grant types. - type: array - minItems: 1 maxItems: 4 + minItems: 1 + type: array + description: List of supported OAuth 2.0 grant types. items: - $ref: '#/components/schemas/GrantType' + $ref: '#/components/schemas/SecurityInfo.OAuth2Info.GrantType' tokenEndpoint: - description: The token endpoint type: string - format: uri + description: The token endpoint + example: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + description: Parameters related to use of OAuth 2.0 + example: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" SecurityInfo: - description: This type represents security information related to a transport + title: SecurityInfo type: object properties: oAuth2Info: - $ref: '#/components/schemas/OAuth2Info' + $ref: '#/components/schemas/SecurityInfo.OAuth2Info' + description: This type represents security information related to a transport + example: + oAuth2Info: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" Self: - description: Self-referring URI. - type: object + title: Self required: - - self + - self + type: object properties: self: $ref: '#/components/schemas/LinkType' - readOnly: true + description: Self-referring URI. + example: + self: + href: "[\"/mecSerMgmtApi/example\"]" SerAvailabilityNotificationSubscription: - description: >- - This type represents a subscription to the notifications from the - MEC platform regarding the availability of a MEC service or a - list of MEC services. - type: object + title: SerAvailabilityNotificationSubscription required: - - subscriptionType - - callbackReference + - _links + - callbackReference + - subscriptionType + type: object properties: subscriptionType: - description: Shall be set to SerAvailabilityNotificationSubscription. type: string + description: Shall be set to SerAvailabilityNotificationSubscription. + example: "[\"SerAvailabilityNotificationSubscription\"]" callbackReference: - description: >- - URI selected by the MEC application instance to receive - notifications on the subscribed MEC service availability - information. This shall be included in both the request and the - response. type: string - format: uri + description: URI selected by the MEC application instance to receive notifications + on the subscribed MEC service availability information. This shall be + included in both the request and the response. _links: $ref: '#/components/schemas/Self' filteringCriteria: - description: >- - Filtering criteria to match services for which events are requested to be reported. - If absent, matches all services. All child attributes are combined with the logical - "AND" operation. - type: object - not: - required: [serInstanceIds, serNames, serCategories] - properties: - serInstanceIds: - $ref: '#/components/schemas/SerInstanceIds' - serNames: - $ref: '#/components/schemas/SerNames' - serCategories: - $ref: '#/components/schemas/CategoryRefs' - states: - $ref: '#/components/schemas/ServiceStates' - isLocal: - description: >- - Indicate whether the service is located in the same locality (as defined - by scopeOfLocality) as the consuming MEC application. - type: boolean - ServiceAvailabilityNotification: - description: >- - This type represents the service availability information. + $ref: '#/components/schemas/SerAvailabilityNotificationSubscription.FilteringCriteria' + example: + filteringCriteria: + serNames: + - serNames + - serNames + serInstanceIds: + - serInstanceIds + - serInstanceIds + serCategories: + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + states: + - "[\"ACTIVE\"]" + - "[\"ACTIVE\"]" + isLocal: false + subscriptionType: "[\"SerAvailabilityNotificationSubscription\"]" + _links: + self: + href: "[\"/mecSerMgmtApi/example\"]" + callbackReference: callbackReference + x-etsi-notes: "NOTE:\tThe attributes \"serInstanceIds\", \"serNames\" and \"\ + serCategories\" provide mutually-exclusive alternatives to define a set of\ + \ services. Only one of them may be present." + SerAvailabilityNotificationSubscription.FilteringCriteria: + title: SerAvailabilityNotificationSubscription.FilteringCriteria type: object + properties: + serInstanceIds: + type: array + description: Identifiers of service instances about which to report events. + items: + type: string + serNames: + type: array + description: Names of services about which to report events. + items: + type: string + serCategories: + type: array + description: Categories of services about which to report events. + items: + $ref: '#/components/schemas/CategoryRef' + states: + type: array + description: "States of the services about which to report events. If the\ + \ event is a state change, this filter represents the state after the\ + \ change." + items: + $ref: '#/components/schemas/ServiceState' + isLocal: + type: boolean + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + example: false + description: "Filtering criteria to match services for which events are requested\ + \ to be reported. If absent, matches all services. All child attributes are\ + \ combined with the logical \"AND\" operation." + example: + serNames: + - serNames + - serNames + serInstanceIds: + - serInstanceIds + - serInstanceIds + serCategories: + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + - name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + states: + - "[\"ACTIVE\"]" + - "[\"ACTIVE\"]" + isLocal: false + ServiceAvailabilityNotification: + title: ServiceAvailabilityNotification required: - - notificationType - - serviceReferences - - _links + - _links + - notificationType + - serviceReferences + type: object properties: notificationType: - description: Shall be set to SerAvailabilityNotification. type: string + description: Shall be set to SerAvailabilityNotificationSubscription. + example: "[\"SerAvailabilityNotificationSubscription\"]" serviceReferences: type: array items: - description: List of links to services whose availability has changed. - type: object - required: - - serName - - serInstanceId - - state - - changeType - properties: - link: - $ref: '#/components/schemas/LinkType' - serName: - $ref: '#/components/schemas/SerName' - serInstanceId: - $ref: '#/components/schemas/SerInstanceId' - state: - $ref: '#/components/schemas/ServiceState' - changeType: - description: >- - Type of the change. Valid values: - ADDED: The service was newly added. - REMOVED: The service was removed. - STATE_CHANGED: Only the state of the service was changed. - ATTRIBUTES_CHANGED: At least one attribute of the service other than state was changed. The change may or may not include changing the state. - type: string - enum: - - ADDED - - REMOVED - - STATE_CHANGED - - ATTRIBUTES_CHANGED + $ref: '#/components/schemas/ServiceAvailabilityNotification.ServiceReferences' _links: $ref: '#/components/schemas/Subscription' + description: This type represents the service availability information. + ServiceAvailabilityNotification.ServiceReferences: + title: ServiceAvailabilityNotification.ServiceReferences + required: + - changeType + - serInstanceId + - serName + - state + type: object + properties: + link: + $ref: '#/components/schemas/LinkType' + serName: + type: string + description: The name of the service. This is how the service producing + MEC application identifies the service instance it produces. + example: "[\"ExampleService\"]" + serInstanceId: + type: string + description: Identifier of the service instance assigned by the MEC platform. + example: "[\"ServiceInstance123\"]" + state: + $ref: '#/components/schemas/ServiceState' + changeType: + $ref: '#/components/schemas/ServiceAvailabilityNotification.ChangeType' + description: List of links to services whose availability has changed. + ServiceAvailabilityNotification.ChangeType: + title: ServiceAvailabilityNotification.ChangeType + type: string + description: "Type of the change. Valid values:\n 1. ADDED: The service was\ + \ newly added.\n 2. REMOVED: The service was removed.\n 3. STATE_CHANGED:\ + \ Only the state of the service was changed. \n 4. ATTRIBUTES_CHANGED: At\ + \ least one attribute of the service other than state was changed. The change\ + \ may or may not include changing the state." + example: "[\"ADDED\"]" + enum: + - ADDED + - REMOVED + - STATE_CHANGED + - ATTRIBUTES_CHANGED SerializerType: - description: The enumeration represents types of serializers + title: SerializerType type: string + description: The enumeration represents types of serializers + example: "[\"JSON\"]" enum: - - JSON - - XML - - PROTOBUF3 + - JSON + - XML + - PROTOBUF3 LocalityType: - description: The scope of locality as expressed by "consumedLocalOnly" and "isLocal". If absent, defaults to MEC_HOST + title: LocalityType type: string + description: "The scope of locality as expressed by \"consumedLocalOnly\" and\ + \ \"isLocal\". If absent, defaults to MEC_HOST" + example: "[\"MEC_SYSTEM\"]" enum: - - MEC_SYSTEM - - MEC_HOST - - NFVI_POP - - ZONE - - ZONE_GROUP - - NFVI_NODE + - MEC_SYSTEM + - MEC_HOST + - NFVI_POP + - ZONE + - ZONE_GROUP + - NFVI_NODE ServiceState: - description: This enumeration defines the possible states of a service. + title: ServiceState type: string + description: This enumeration defines the possible states of a service. + example: "[\"ACTIVE\"]" enum: - - ACTIVE - - INACTIVE - - SUSPENDED - ServiceStates: - description: >- - States of the services about which to report events. If the event is - a state change, this filter represents the state after the change. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/ServiceState' - SerInstanceId: - description: >- - Identifier of the service instance assigned by the MEC platform. - type: string - readOnly: true - SerInstanceIds: - description: Identifiers of service instances about which to report events. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/SerInstanceId' - SerName: - description: >- - The name of the service. This is how the service producing MEC - application identifies the service instance it produces. - type: string - SerNames: - description: Names of services about which to report events. - type: array - minItems: 0 - items: - $ref: '#/components/schemas/SerName' - ServiceInfoPost: - description: This type represents the general information of a MEC service. - type: object - required: - - serName - - version - - state - - serializer - oneOf: - - required: [transportId] - - required: [transportInfo] - properties: - serInstanceId: - $ref: '#/components/schemas/SerInstanceId' - serName: - $ref: '#/components/schemas/SerName' - serCategory: - $ref: '#/components/schemas/CategoryRef' - version: - description: Service version - type: string - state: - $ref: '#/components/schemas/ServiceState' - transportId: - description: >- - Identifier of the platform-provided transport to be used by the service. - Valid identifiers may be obtained using the "Transport information - query" procedure. May be present in POST requests to signal the use of a - platform-provided transport for the service, and shall be absent - otherwise. - type: string - writeOnly: true - transportInfo: - $ref: '#/components/schemas/TransportInfo' - serializer: - $ref: '#/components/schemas/SerializerType' - scopeOfLocality: - $ref: '#/components/schemas/LocalityType' - consumedLocalOnly: - description: >- - Indicate whether the service can only be consumed by the MEC applications - located in the same locality (as defined by scopeOfLocality) as this - service instance. - type: boolean - isLocal: - description: >- - Indicate whether the service is located in the same locality (as defined - by scopeOfLocality) as the consuming MEC application. - type: boolean + - ACTIVE + - INACTIVE + - SUSPENDED ServiceInfo: - description: This type represents the general information of a MEC service. - type: object + title: ServiceInfo required: - - serName - - version - - state - - transportInfo - - serializer - - _links + - serName + - serializer + - state + - transportInfo + - version + type: object properties: serInstanceId: - $ref: '#/components/schemas/SerInstanceId' + type: string + description: Identifier of the service instance assigned by the MEC platform. + example: "[\"ServiceInstance123\"]" serName: - $ref: '#/components/schemas/SerName' + type: string + description: The name of the service. This is how the service producing + MEC application identifies the service instance it produces. + example: "[\"ExampleService\"]" serCategory: $ref: '#/components/schemas/CategoryRef' version: - description: Service version type: string + description: Service version + example: "[\"ServiceVersion1\"]" state: $ref: '#/components/schemas/ServiceState' transportId: type: string - description: > - Identifier of the platform-provided transport to be used by - the service. Valid identifiers may be obtained using the - "Transport information query" procedure. May be present - in POST requests to signal the use of a platform-provided - transport for the service, and shall be absent otherwise. - See note 2. + description: "Identifier of the platform-provided transport to be used by\ + \ the service. Valid identifiers may be obtained using the \"Transport\ + \ information query\" procedure. May be present in POST requests to signal\ + \ the use of a platform-provided transport for the service, and shall\ + \ be absent otherwise. See note 2." + example: "[\"transportId1\"]" transportInfo: $ref: '#/components/schemas/TransportInfo' serializer: @@ -687,559 +1829,235 @@ components: scopeOfLocality: $ref: '#/components/schemas/LocalityType' consumedLocalOnly: - description: >- - Indicate whether the service can only be consumed by the MEC applications - located in the same locality (as defined by scopeOfLocality) as this - service instance. type: boolean + description: Indicate whether the service can only be consumed by the MEC + applications located in the same locality (as defined by scopeOfLocality) + as this service instance. + example: false isLocal: - description: >- - Indicate whether the service is located in the same locality (as defined - by scopeOfLocality) as the consuming MEC application. type: boolean + description: Indicate whether the service is located in the same locality + (as defined by scopeOfLocality) as the consuming MEC application. + example: false livenessInterval: type: integer - description: - Interval (in seconds) between two consecutive "heartbeat" messages (see clause 8.2.10.3.3). - If the service-producing application supports sending "heartbeat" messages, it shall include this attribute in the registration request. In this case, the application shall either set the value of this attribute to zero or shall use this attribute to propose a non-zero positive value for the liveness interval. - If the application has provided this attribute in the request and the MEC platform requires "heartbeat" messages, the MEC platform shall return this attribute value in the HTTP responses. The MEC platform may use the value proposed in the request or may choose a different value. - If the MEC platform does not require "heartbeat" messages for this service instance it shall omit the attribute in responses. + description: "Interval (in seconds) between two consecutive \"heartbeat\"\ + \ messages (see clause 8.2.10.3.3). If the service-producing application\ + \ supports sending \"heartbeat\" messages, it shall include this attribute\ + \ in the registration request. In this case, the application shall either\ + \ set the value of this attribute to zero or shall use this attribute\ + \ to propose a non-zero positive value for the liveness interval. If the\ + \ application has provided this attribute in the request and the MEC platform\ + \ requires \"heartbeat\" messages, the MEC platform shall return this\ + \ attribute value in the HTTP responses. The MEC platform may use the\ + \ value proposed in the request or may choose a different value. If the\ + \ MEC platform does not require \"heartbeat\" messages for this service\ + \ instance it shall omit the attribute in responses." _links: - type: object - required: - - self - properties: - self: - $ref: '#/components/schemas/LinkType' - liveness: - $ref: '#/components/schemas/LinkType' + $ref: '#/components/schemas/ServiceInfo__links' + description: This type represents the general information of a MEC service. example: - serInstanceId: 'rnisInstance1' - serName: 'myRnis' - serCategory: - href: 'catItem1' - id: 'id12345' - name: 'RNI' - version: 'v2' - version: '2.2.1' - state: 'ACTIVE' + scopeOfLocality: "[\"MEC_SYSTEM\"]" transportInfo: - id: 'TransId12345' - name: 'REST' - description: 'REST API' - type: 'REST_HTTP' - protocol: 'HTTP' - version: '2.0' - endpoint: - uris: - - 'https://my.callback.com/sandboxname/rni/v2/' - serializer: 'JSON' - scopeOfLocality: 'MEC_SYSTEM' + implSpecificInfo: implSpecificInfo + protocol: "[\"HTTP\"]" + endpoint: "" + security: + oAuth2Info: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + name: "[\"REST\"]" + description: "[\"REST API\"]" + id: "[\"TransId12345\"]" + type: "[\"REST_HTTP\"]" + version: "[\"2.0\"]" + transportId: "[\"transportId1\"]" + _links: + liveness: null + self: + href: "[\"/mecSerMgmtApi/example\"]" + serializer: "[\"JSON\"]" + consumedLocalOnly: false + version: "[\"ServiceVersion1\"]" + serInstanceId: "[\"ServiceInstance123\"]" + isLocal: false + serCategory: + name: "[\"RNI\"]" + href: "[\"/example/catalogue1\"]" + id: "[\"id12345\"]" + version: "[\"version1\"]" + livenessInterval: 0 + serName: "[\"ExampleService\"]" + state: "[\"ACTIVE\"]" + x-etsi-notes: "NOTE 1:\tThe service category may be included in the application\ + \ descriptor. It may be allocated by the operator or by the application developer.\n\ + NOTE 2:\tEither transportId or transportInfo but not both shall be present\ + \ in POST requests.\nNOTE 3:\tValues NFVI_POP, ZONE and NFVI_NODE are used\ + \ when the service instance is deployed as a VNF.\nNOTE 4:\tThe isLocal is\ + \ used only in service availability query response and service availability\ + \ subscription/notification messages.\nNOTE 5:\tValue ZONE_GROUP can be used\ + \ when the service instance is deployed as a VNF.\nNOTE 6:\tRegarding the\ + \ value MEC_SYSTEM, if the service is running on the same MEC system as the\ + \ MEC app, then it will be local to it." ServiceLivenessInfo: - type: object required: - - state - - timeStamp - - interval + - interval + - state + - timeStamp + type: object properties: state: $ref: '#/components/schemas/ServiceState' timeStamp: - type: object - description: The time when the last "heartbeat" message was received by MEC platform - required: - - seconds - - nanoSeconds - properties: - seconds: - type: integer - nanoSeconds: - type: integer + $ref: '#/components/schemas/ServiceLivenessInfo_timeStamp' interval: type: integer - description: The interval (in seconds) between two consecutive "heartbeat" messages (see clause 8.2.10.3.3) that MEC platform has determined. + description: The interval (in seconds) between two consecutive "heartbeat" + messages (see clause 8.2.10.3.3) that MEC platform has determined. + example: + timeStamp: + seconds: 0 + nanoSeconds: 6 + interval: 1 + state: "[\"ACTIVE\"]" ServiceLivenessUpdate: - type: object required: - - state + - state + type: object properties: state: $ref: '#/components/schemas/ServiceState' Subscription: - description: A link to the related subscription - type: object + title: Subscription required: - - subscription + - subscription + type: object properties: subscription: $ref: '#/components/schemas/LinkType' + description: A link to the related subscription TransportInfo: - description: This type represents the general information of a MEC service. - type: object + title: TransportInfo required: - - id - - name - - type - - protocol - - version - - endpoint - - security + - endpoint + - id + - name + - protocol + - security + - type + - version + type: object properties: id: - description: The identifier of this transport type: string + description: The identifier of this transport + example: "[\"TransId12345\"]" name: - description: The name of this transport type: string + description: The name of this transport + example: "[\"REST\"]" description: - description: Human-readable description of this transport type: string + description: Human-readable description of this transport + example: "[\"REST API\"]" type: $ref: '#/components/schemas/TransportType' protocol: - description: The name of the protocol used. Shall be set to HTTP for a REST API. type: string + description: The name of the protocol used. Shall be set to HTTP for a REST + API. + example: "[\"HTTP\"]" version: - description: The version of the protocol used type: string + description: The version of the protocol used + example: "[\"2.0\"]" endpoint: description: This type represents information about a transport endpoint - type: object oneOf: - - $ref: '#/components/schemas/EndPointInfoUris' - - $ref: '#/components/schemas/EndPointInfoAddresses' - - $ref: '#/components/schemas/EndPointInfoAlternative' + - $ref: '#/components/schemas/EndPointInfo.Uris' + - $ref: '#/components/schemas/EndPointInfo.Fqdn' + - $ref: '#/components/schemas/EndPointInfo.Addresses' + - $ref: '#/components/schemas/EndPointInfo.Alternative' + x-etsi-notes: "NOTE:\tExactly one of \"uris\", \"fqdn\", \"addresses\" or\ + \ \"alternative\" shall be present." security: $ref: '#/components/schemas/SecurityInfo' implSpecificInfo: + type: string description: Additional implementation specific details of the transport - type: object + description: This type represents the general information of a MEC service. + example: + implSpecificInfo: implSpecificInfo + protocol: "[\"HTTP\"]" + endpoint: "" + security: + oAuth2Info: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + name: "[\"REST\"]" + description: "[\"REST API\"]" + id: "[\"TransId12345\"]" + type: "[\"REST_HTTP\"]" + version: "[\"2.0\"]" TransportType: - description: The enumeration TransportType represents types of transports + title: TransportType type: string + description: The enumeration TransportType represents types of transports + example: "[\"REST_HTTP\"]" enum: - - REST_HTTP - - MB_TOPIC_BASED - - MB_ROUTING - - MB_PUBSUB - - RPC - - RPC_STREAMING - - WEBSOCKET - parameters: - Path.AppInstanceId: - name: appInstanceId - description: >- - Represents a MEC application instance. Note that the - appInstanceId is allocated by the MEC platform manager. - in: path - required: true - schema: - type: string - Path.SubscriptionId: - name: subscriptionId - description: >- - Represents a subscription to the notifications from the MEC - platform. - in: path - required: true - schema: - type: string - Path.ServiceId: - name: serviceId - description: Represents a MEC service instance. - in: path - required: true - schema: - type: string - Query.SerCategoryId: - name: ser_category_id - description: >- - A MEC application instance may use ser_category_id as an input - parameter to query the availability of a list of MEC service - instances in a serCategory. Either "ser_instance_id" or "ser_name" or - "ser_category_id" or none of them shall be present. - in: query - required: false - schema: - type: string - Query.SerInstanceId: - name: ser_instance_id - description: >- - A MEC application instance may use multiple ser_instance_ids as - an input parameter to query the availability of a list of MEC - service instances. Either "ser_instance_id" or "ser_name" or - "ser_category_id" or none of them shall be present. - in: query - required: false - schema: - type: array - items: - type: string - Query.SerName: - name: ser_name - description: >- - A MEC application instance may use multiple ser_names as an - input parameter to query the availability of a list of MEC - service instances. Either "ser_instance_id" or "ser_name" or - "ser_category_id" or none of them shall be present. - in: query - required: false - schema: - type: array - items: - type: string - Query.LocalityType: - name: scope_of_locality - description: >- - A MEC application instance may use scope_of_locality as an input - parameter to query the availability of a list of MEC service instances - with a certain scope of locality. - in: query - required: false - schema: - type: string - Query.IsLocal: - name: is_local - description: >- - Indicate whether the service is located in the same locality (as - defined by scopeOfLocality) as the consuming MEC application. - in: query - required: false - schema: - type: boolean - Query.ConsumedLocalOnly: - name: consumed_local_only - description: >- - Indicate whether the service can only be consumed by the MEC - applications located in the same locality (as defined by - scopeOfLocality) as this service instance. - in: query - required: false - schema: - type: boolean - responses: - ApplicationsSubscriptions200: - description: >- - Upon success, a response body containing the list of links to the - requested subscriptions is returned. - content: - application/json: - schema: - $ref: '#/components/schemas/SubscriptionLinkList' - links: - getIndividualmecSerMgmtApiSubscriptionLinkList: - $ref: '#/components/links/GetIndividualmecSerMgmtApiSubscriptionLinkList' - delIndividualmecSerMgmtApiSubscriptionLinkList: - $ref: '#/components/links/DelIndividualmecSerMgmtApiSubscriptionLinkList' - ApplicationsSubscriptions201: - description: >- - Entity body in the request contains a subscription to the MEC - service availability notifications that is to be created. - headers: - location: - description: The resource URI of the created resource - schema: - type: string - format: uri - content: - application/json: - schema: - $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' - links: - getIndividualmecSerMgmtApiSubscription: - $ref: '#/components/links/GetIndividualmecSerMgmtApiSubscription' - delIndividualmecSerMgmtApiSubscription: - $ref: '#/components/links/DelIndividualmecSerMgmtApiSubscription' - ApplicationsSubscription200: - description: >- - Upon success, a response body containing the requested subscription - is returned. - content: - application/json: - schema: - $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' - Services200: - description: >- - It is used to indicate nonspecific success. The response body - contains a representation of the resource. - content: - application/json: - schema: - type: array - minItems: 0 - items: - $ref: '#/components/schemas/ServiceInfo' - links: - getIndividualmecService: - $ref: '#/components/links/GetIndividualmecService' - putIndividualmecService: - $ref: '#/components/links/PutIndividualmecService' - Services201: - description: >- - Upon success, the HTTP response shall include a Location HTTP header - that contains the resource URI of the created resource. - headers: - location: - description: The resource URI of the created resource - schema: - type: string - format: uri - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - links: - getIndividualmecService: - $ref: '#/components/links/GetIndividualmecService' - putIndividualmecService: - $ref: '#/components/links/PutIndividualmecService' - ServicesServiceId200: - description: >- - It is used to indicate nonspecific success. The response body - contains a representation of the resource. - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - Transports200: - description: >- - It is used to indicate nonspecific success. The response body - contains a representation of the resource. - content: - application/json: - schema: - type: array - minItems: 0 - items: - $ref: '#/components/schemas/TransportInfo' - links: - getTransportInfo: - $ref: '#/components/links/GetTransportInfo' - 400: - description: >- - Bad Request. - It is used to indicate that incorrect parameters were passed to the request. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 401: - description: >- - Unauthorized. - It is used when the client did not submit the appropriate credentials. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 403: - description: >- - Forbidden. - The operation is not allowed given the current status of the resource. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 404: - description: >- - Not Found. - It is used when a client provided a URI that cannot be mapped - to a valid resource URI. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 409: - description: >- - Conflict. - The operation cannot be executed currently, due to a conflict with - the state of the resource. Typically, this is because the application - instance resource is in NOT_INSTANTIATED state. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 412: - description: >- - Precondition Failed. - It is used when a condition has failed during conditional requests, - e.g. when using ETags to avoid write conflicts. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 414: - description: >- - It is used to indicate that the server is refusing to process the request because the request URI is longer than the server is willing or able to process. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - 429: - description: >- - Too Many Requests. - It is used when a rate limiter has triggered. - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + appInstanceId_services_body: + description: New ServiceInfo with updated "state" is included as entity body + of the request + oneOf: + - type: object + - type: object + ServiceInfo__links: + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + liveness: + $ref: '#/components/schemas/LinkType' + example: + liveness: null + self: + href: "[\"/mecSerMgmtApi/example\"]" + ServiceLivenessInfo_timeStamp: + required: + - nanoSeconds + - seconds + type: object + properties: + seconds: + type: integer + nanoSeconds: + type: integer + description: The time when the last "heartbeat" message was received by MEC + platform + example: + seconds: 0 + nanoSeconds: 6 requestBodies: - ApplicationsSubscriptions: - content: - application/json: - schema: - $ref: '#/components/schemas/SerAvailabilityNotificationSubscription' - example: - subscriptionType: 'SerAvailabilityNotificationSubscription' - callbackReference: 'http://my.callback.com/mec_service_mgmt_ser_availabilities/some-id' - filteringCriteria: - serNames: - - 'myRnis' - states: - - 'ACTIVE' - - 'INACTIVE' - isLocal: true - description: >- - Entity body in the request contains a subscription to the MEC - application termination notifications that is to be created. - required: true - Services: - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - description: >- - New ServiceInfo with updated "state" is included as entity body of the - request - required: true - ServicesPost: - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfoPost' - example: - serName: 'myRnis' - serCategory: - href: 'catItem1' - id: 'id12345' - name: 'RNI' - version: 'v2' - version: '2.2.1' - state: 'ACTIVE' - transportInfo: - id: 'TransId12345' - name: 'REST' - description: 'REST API' - type: 'REST_HTTP' - protocol: 'HTTP' - version: '2.0' - endpoint: - uris: - - 'https://my.callback.com/sandboxname/rni/v2/' - serializer: 'JSON' - scopeOfLocality: 'MEC_SYSTEM' - description: >- - New ServiceInfo with updated "state" is included as entity body of the - request - required: true - ServicesServiceId: - content: - application/json: - schema: - $ref: '#/components/schemas/ServiceInfo' - description: >- - New ServiceInfo with updated "state" is included as entity body of the - request - required: true ServiceAvailabilityNotification: content: application/json: schema: $ref: '#/components/schemas/ServiceAvailabilityNotification' required: true - callbacks: - ServiceAvailabilityNotification: - '{$request.body#/callbackReference}': - post: - description: >- - 'Represents the service availability information that - is used in the following cases - - when the MEC platform announces the newly available - services to the authorized relevant MEC applications (e.g. - the applications that indicate the services as "optional" - or "required") that are subscribed to the corresponding - service availability notifications - - when the MEC platform notifies the authorized relevant - applications that are subscribed to the corresponding - service availability notifications about the service availability changes.' - operationId: Sm_ServiceAvailabilityNotification_POST - tags: - - callbacks - requestBody: - $ref: '#/components/requestBodies/ServiceAvailabilityNotification' - responses: - '200': - description: Expected responses from callback consumer, if it accepts the callback - links: - GetIndividualmecService: - operationId: Sm_ServicesServiceId_GET - description: The `serviceId` value returned in the response can be used as the `serviceId` parameter in `GET /services/{serviceId}` - parameters: - serviceId: '$response.body#/serviceId' - PutIndividualmecService: - operationId: Sm_ServicesServiceId_PUT - description: The `serviceId` value returned in the response can be used as the `serviceId` parameter in `PUT /services/{serviceId}` - parameters: - serviceId: '$response.body#/serviceId' - GetTransportInfo: - operationId: Sm_AppServices_POST - description: The `id` value returned in the response can be used as the `transportId` parameter in `POST /applications/{appInstanceId}/services`. The first transport is provided as the link as wildcards are not supported - parameters: - transportId: '$response.body#/0/id' - GetIndividualmecSerMgmtApiSubscription: - operationId: Sm_ApplicationsSubscription_GET - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/.*\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - DelIndividualmecSerMgmtApiSubscription: - operationId: Sm_ApplicationsSubscription_DELETE - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - GetIndividualmecSerMgmtApiSubscriptionLinkList: - operationId: Sm_ApplicationsSubscription_GET - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - DelIndividualmecSerMgmtApiSubscriptionLinkList: - operationId: Sm_ApplicationsSubscription_DELETE - description: The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}` - parameters: - description: regex = \/mec_service_mgmt\/v1\/applications\/.*\/subscriptions\/(.*);subscriptionId = href.match(regex)[1];// where "href" is an attribute within the subscription attribute within the _links attribute - subscriptionId: 'TBC' - examples: - ServiceInfo: - value: - serInstanceId: 'rnisInstance1' - serName: 'myRnis' - serCategory: - href: 'catItem1' - id: 'id12345' - name: 'RNI' - version: 'v2' - version: '2.2.1' - state: 'ACTIVE' - transportInfo: - id: 'TransId12345' - name: 'REST' - description: 'REST API' - type: 'REST_HTTP' - protocol: 'HTTP' - version: '2.0' - endpoint: - uris: - - 'https://my.callback.com/sandboxname/rni/v2/' - serializer: 'JSON' - scopeOfLocality: 'MEC_SYSTEM' diff --git a/config/api/vis-api.yaml b/config/api/vis-api.yaml index 3097dcc..53f366a 100644 --- a/config/api/vis-api.yaml +++ b/config/api/vis-api.yaml @@ -9,10 +9,10 @@ info: license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters - version: 3.1.1 + version: 3.2.1 externalDocs: - description: "ETSI GS MEC 030 V2X Information Services API, v3.1.1" - url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.01.01_60/gs_mec030v030101p.pdf + description: "ETSI GS MEC 030 V2X Information Services API, v3.2.1" + url: https://www.https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.02.01_60/ servers: - url: https://localhost/sandboxname/vis/v2 tags: diff --git a/config/permissions.yaml b/config/permissions.yaml index 0897cc5..64ef682 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -186,7 +186,7 @@ services: #------------------------------ - name: 'meep-app-enablement' api: 'mec_app_support' - path: '/mec_app_support/v1' + path: '/mec_app_support/v2' sbox: true default: mode: 'allow' -- GitLab From bea7e40995da0c1af46fe1cfb7cf1e703fa0d337 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 22 Apr 2024 08:20:22 +0200 Subject: [PATCH 11/58] Update PoC --- config/.meepctl-repocfg.yaml | 270 ++++++++++++++++++----------------- config/permissions.yaml | 82 +++++++++++ 2 files changed, 224 insertions(+), 128 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index cb34c8a..75e0095 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -30,17 +30,17 @@ repo: # user supplied resources user: # user supplied frontend UI located @ .meep/user/frontend - frontend: true + frontend: false # user supplied platform swagger UI located @ .meep/user/swagger # user supplied sandbox swagger UI located @ .meep/user/sandbox-swagger - swagger: true + swagger: false # platform ingress configuration ingress: # host name - host: try-mec.etsi.org + host: mec-platform.etsi.org # enable https only (redirect http requests to https port) - https-only: true + https-only: false # bind to host ports (true) or node ports (false) host-ports: true # http port number @@ -67,27 +67,27 @@ repo: # GitHub OAuth provider config github: # enable GitHub OAuth - enabled: truee + enabled: false # authorization url auth-url: https://github.com/login/oauth/authorize # access token url token-url: https://github.com/login/oauth/access_token # OAuth redirect URI - redirect-uri: https://try-mec.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://mec-platform.etsi.org/auth/v1/authorize # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-github # GitLab OAuth provider config gitlab: # enable GitLab OAuth - enabled: true + enabled: false # authorization url - auth-url: https://forge.etsi.org/rep/oauth/authorize + auth-url: https://gitlab.com/oauth/authorize # access token url - token-url: https://forge.etsi.org/rep/oauth/token + token-url: https://gitlab.com/oauth/token # OAuth redirect URI - redirect-uri: https://try-mec.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://mec-platform.etsi.org/auth/v1/authorize # GitLab api url - api-url: https://forge.etsi.org/rep/api/v4 + # api-url: https://gitlab.com # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-gitlab @@ -96,9 +96,9 @@ repo: # Influx configuration influx: # enable influx data backups - enabled: true + enabled: false # object store url - url: https://metrics.try-mec.etsi.org/ + url: my-object-store-fqdn # object store configuration secret secret: meep-influx-objstore-config # Number of days to retain daily data backups @@ -108,7 +108,7 @@ repo: # external labels added to prometheus metrics external-labels: # deployment region (geographic or logical) - region: etsi + region: idcc # function being monitored monitor: advantedge # prometheus environment (dev|prod) @@ -118,7 +118,7 @@ repo: # Thanos long-term storage thanos: # enable Thanos - enabled: true + enabled: false # object store configuration secret secret: meep-thanos-objstore-config # query component @@ -148,7 +148,7 @@ repo: # Thanos long-term storage archive thanos-archive: # enable Thanos archive - enabled: true + enabled: false # archive object store configuration secret secret: meep-thanos-archive-objstore-config @@ -167,7 +167,7 @@ repo: # Influx configuration influx: # enable influx garbage collection - enabled: true + enabled: false # list of databases that must not be removed exceptions: # - my_db_to_keep @@ -179,8 +179,14 @@ repo: # Default monitoring dashboards dashboards: - mec-sandbox: dashboards/mec-sandbox.json + network-metrics-point-to-point: dashboards/network-metrics-point-to-point.json + network-metrics-aggregation: dashboards/network-metrics-aggregation.json + wireless-metrics-point-to-point: dashboards/wireless-metrics-point-to-point.json + wireless-metrics-aggregation: dashboards/wireless-metrics-aggregation.json + http-single-log: dashboards/http-log-byId.json + http-logs-aggregation: dashboards/http-loggers.json platform-advantedge: dashboards/platform-advantedge.json + # platform-advantedge: dashboards/platform-advantedge-thanos.json platform-k8s: dashboards/platform-k8s.json runtime-environment-node: dashboards/runtime-environment-node.json runtime-environment-k8s-cluster: dashboards/runtime-environment-k8s-cluster.json @@ -231,7 +237,7 @@ repo: # location of entry script 'entrypoint.sh': go-apps/meep-auth-svc/entrypoint.sh # location of REST API permissions file - 'permissions.yaml': config/permissions.yaml + 'permissions.yaml': config/permissions-open.yaml meep-ingress-certs: # enable meepctl build build: false @@ -269,7 +275,7 @@ repo: lint: true # list of dependencies pods to monitor dependency-pods: - - meep-cert-manager + # - meep-cert-manager - meep-couchdb - meep-docker-registry - meep-grafana @@ -284,23 +290,24 @@ repo: core-pods: - meep-mon-engine - meep-platform-ctrl + - meep-sandbox-api - meep-virt-engine - meep-webhook # list of sandbox pods to monitor sandbox-pods: - meep-gis-engine - # - meep-loc-serv + - meep-loc-serv - meep-metrics-engine - # - meep-mg-manager - # - meep-rnis - # - meep-dai - # - meep-tm - # - meep-wais - # - meep-ams + - meep-mg-manager + - meep-rnis + - meep-dai + - meep-tm + - meep-wais + - meep-ams - meep-sandbox-ctrl - # - meep-tc-engine - # - meep-app-enablement - # - meep-vis + - meep-tc-engine + - meep-app-enablement + - meep-vis # location of API specifications api: - name: 'AdvantEDGE Monitoring Engine REST API' @@ -344,6 +351,39 @@ repo: swagger: js-apps/meep-swagger-ui # location of AdvantEDGE frontend frontend: bin/meep-frontend + meep-sandbox-api: + # location of source code + src: go-apps/meep-sandbox-api + # location of binary + bin: bin/meep-sandbox-api + # location of deployment chart + chart: charts/meep-sandbox-api + # user supplied value file located @ .meep/user/values (use below file name) + chart-user-values: meep-sandbox-api.yaml + # enable meepctl build + build: true + # enable meepctl dockerize + dockerize: true + # enable meepctl deploy/delete + deploy: true + # supports code coverage measurement when built in codecov mode + codecov: true + # supports linting + lint: true + # location of API specifications + api: + - name: 'AdvantEDGE HTTP REST API' + file: go-apps/meep-sandbox-api/api/swagger.yaml + # location of user supplied API specifications + user-api: + # resources available to docker container image + docker-data: + # location of entry script + 'entrypoint.sh': go-apps/meep-sandbox-api/entrypoint.sh + # location of Swagger UI + swagger: js-apps/meep-swagger-ui + # location of AdvantEDGE frontend + frontend: bin/meep-frontend meep-virt-engine: # location of source code src: go-apps/meep-virt-engine @@ -385,18 +425,18 @@ repo: # list of sandbox specific pods sandbox-pods: - meep-gis-engine - # - meep-loc-serv + - meep-loc-serv - meep-metrics-engine - # - meep-mg-manager - # - meep-rnis - # - meep-dai - # - meep-tm - # - meep-wais - # - meep-ams + - meep-mg-manager + - meep-rnis + - meep-dai + - meep-tm + - meep-wais + - meep-ams - meep-sandbox-ctrl - # - meep-tc-engine - # - meep-app-enablement - # - meep-vis + - meep-tc-engine + - meep-app-enablement + - meep-vis meep-webhook: # location of source code src: go-apps/meep-webhook @@ -480,8 +520,6 @@ repo: file: go-apps/meep-ams/api/swagger.yaml # location of user supplied API specifications user-api: - - name: 'Application Mobility Service REST API' - file: config/api/ams-api.yaml # resources available to docker container image docker-data: # location of entry script @@ -516,10 +554,6 @@ repo: file: go-apps/meep-app-enablement/api/service-mgmt/swagger.yaml # location of user supplied API specifications user-api: - - name: 'MEC Application Support API' - file: config/api/app-support.yaml - - name: 'MEC Service Management API' - file: config/api/service-mgmt.yaml # resources available to docker container image docker-data: # location of entry script @@ -581,8 +615,6 @@ repo: file: go-apps/meep-loc-serv/api/swagger.yaml # location of user supplied API specifications user-api: - - name: 'Location Service REST API' - file: config/api/loc-serv-api.yaml # resources available to docker container image docker-data: # location of entry script @@ -631,15 +663,15 @@ repo: # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-mg-manager.yaml # enable meepctl build - build: false + build: true # enable meepctl dockerize - dockerize: false + dockerize: true # enable meepctl deploy/delete - deploy: false + deploy: true # supports code coverage measurement when built in codecov mode codecov: true # supports linting - lint: false + lint: true # location of API specifications api: - name: 'AdvantEDGE Mobility Group Service REST API' @@ -727,15 +759,15 @@ repo: # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-tc-engine.yaml # enable meepctl build - build: false + build: true # enable meepctl dockerize - dockerize: false + dockerize: true # enable meepctl deploy/delete - deploy: false + deploy: true # supports code coverage measurement when built in codecov mode codecov: true # supports linting - lint: false + lint: true meep-tc-sidecar: # location of source code src: go-apps/meep-tc-sidecar @@ -751,15 +783,15 @@ repo: codecov: false # supports linting lint: true - meep-wais: + meep-tm: # location of source code - src: go-apps/meep-wais + src: go-apps/meep-tm # location of binary - bin: bin/meep-wais + bin: bin/meep-tm # location of deployment chart - chart: charts/meep-wais + chart: charts/meep-tm # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-wais.yaml + chart-user-values: meep-tm.yaml # extra build flags build-flags: - -mod=vendor @@ -775,25 +807,25 @@ repo: lint: true # location of API specifications api: - - name: 'AdvantEDGE WLAN Access Information REST API' - file: go-apps/meep-wais/api/swagger.yaml + - name: 'AdvantEDGE MEC Bandwidth Management REST API' + file: go-apps/meep-tm/api/bwm/swagger.yaml + - name: 'AdvantEDGE MEC Multi-access Traffic Steering REST API' + file: go-apps/meep-tm/api/mts/swagger.yaml # location of user supplied API specifications user-api: - - name: 'WLAN Access Information Service REST API' - file: config/api/wais-api.yaml # resources available to docker container image docker-data: # location of entry script - 'entrypoint.sh': go-apps/meep-wais/entrypoint.sh - meep-tm: + 'entrypoint.sh': go-apps/meep-tm/entrypoint.sh + meep-wais: # location of source code - src: go-apps/meep-tm + src: go-apps/meep-wais # location of binary - bin: bin/meep-tm + bin: bin/meep-wais # location of deployment chart - chart: charts/meep-tm + chart: charts/meep-wais # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-tm.yaml + chart-user-values: meep-wais.yaml # extra build flags build-flags: - -mod=vendor @@ -809,29 +841,23 @@ repo: lint: true # location of API specifications api: - - name: 'AdvantEDGE MEC Bandwidth Management REST API' - file: go-apps/meep-tm/api/bwm/swagger.yaml - - name: 'AdvantEDGE MEC Multi-access Traffic Steering REST API' - file: go-apps/meep-tm/api/mts/swagger.yaml + - name: 'AdvantEDGE WLAN Access Information REST API' + file: go-apps/meep-wais/api/swagger.yaml # location of user supplied API specifications user-api: - # resources available to docker container image - - name: 'Bandwidth Management REST API' - file: config/api/bwm-api.yaml - - name: 'Multi-access Traffic Steering REST API' - file: config/api/mts-api.yaml + # resources available to docker container image docker-data: # location of entry script - 'entrypoint.sh': go-apps/meep-tm/entrypoint.sh - meep-dai: + 'entrypoint.sh': go-apps/meep-wais/entrypoint.sh + meep-vis: # location of source code - src: go-apps/meep-dai + src: go-apps/meep-vis # location of binary - bin: bin/meep-dai + bin: bin/meep-vis # location of deployment chart - chart: charts/meep-dai + chart: charts/meep-vis # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-dai.yaml + chart-user-values: meep-vis.yaml # extra build flags build-flags: - -mod=vendor @@ -843,31 +869,27 @@ repo: deploy: true # supports code coverage measurement when built in codecov mode codecov: true - # supports onboarded device application instantiation - onboardedapp: true # supports linting lint: true # location of API specifications api: - - name: 'AdvantEDGE Device Application Interface REST API' - file: go-apps/meep-dai/api/swagger.yaml + - name: 'AdvantEDGE V2X Information Service REST API' + file: go-apps/meep-vis/api/swagger.yaml # location of user supplied API specifications user-api: - - name: 'Device Application Interface REST API' - file: config/api/dai-api.yaml # resources available to docker container image docker-data: # location of entry script - 'entrypoint.sh': go-apps/meep-dai/entrypoint.sh - meep-vis: + 'entrypoint.sh': go-apps/meep-vis/entrypoint.sh + meep-dai: # location of source code - src: go-apps/meep-vis + src: go-apps/meep-dai # location of binary - bin: bin/meep-vis + bin: bin/meep-dai # location of deployment chart - chart: charts/meep-vis + chart: charts/meep-dai # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-vis.yaml + chart-user-values: meep-dai.yaml # extra build flags build-flags: - -mod=vendor @@ -879,22 +901,20 @@ repo: deploy: true # supports code coverage measurement when built in codecov mode codecov: true + # supports onboarded device application instantiation + onboardedapp: true # supports linting lint: true # location of API specifications api: - - name: 'AdvantEDGE V2X Information REST API' - file: go-apps/meep-vis/api/swagger.yaml + - name: 'AdvantEDGE Device Application Interface Service REST API' + file: go-apps/meep-dai/api/swagger.yaml # location of user supplied API specifications user-api: - - name: 'V2X Information Service REST API' - file: config/api/vis-api.yaml # resources available to docker container image docker-data: # location of entry script - 'entrypoint.sh': go-apps/meep-vis/entrypoint.sh - # location of grid map file - 'grid_map.yaml': go-packages/meep-vis-traffic-mgr/grid_map.yaml + 'entrypoint.sh': go-apps/meep-dai/entrypoint.sh #------------------------------ # Dependencies @@ -977,17 +997,6 @@ repo: chart: charts/kube-state-metrics # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-kube-state-metrics.yaml - meep-minio: - # enable meepctl build -> deps are never built - build: false - # enable meepctl dockerize -> deps are never dockerized - dockerize: false - # enable meepctl deploy/delete - deploy: false - # location of deployment chart - chart: charts/minio - # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-minio.yaml meep-open-map-tiles: # enable meepctl build -> deps are never built build: false @@ -1038,7 +1047,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1049,7 +1058,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1231,16 +1240,6 @@ repo: src: go-packages/meep-users # supports linting lint: true - meep-dai-client: - # location of source code - src: go-packages/meep-dai-client - # supports linting - lint: false - meep-wais-client: - # location of source code - src: go-packages/meep-wais-client - # supports linting - lint: false meep-vis-client: # location of source code src: go-packages/meep-vis-client @@ -1250,6 +1249,11 @@ repo: # location of source code src: go-packages/meep-vis-traffic-mgr # supports linting + lint: true + meep-wais-client: + # location of source code + src: go-packages/meep-wais-client + # supports linting lint: false meep-watchdog: # location of source code @@ -1261,6 +1265,11 @@ repo: src: go-packages/meep-websocket # supports linting lint: true + meep-dai-client: + # location of source code + src: go-packages/meep-dai-client + # supports linting + lint: false # Javascript Packages js-packages: @@ -1289,6 +1298,11 @@ repo: src: js-packages/meep-platform-ctrl-client # supports linting lint: false + meep-sandbox-api-client: + # location of source code + src: go-packages/meep-sandbox-api-client + # supports linting + lint: false meep-sandbox-ctrl-client: # location of source code src: js-packages/meep-sandbox-ctrl-client diff --git a/config/permissions.yaml b/config/permissions.yaml index 0897cc5..8b9c0d2 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -622,6 +622,88 @@ services: admin: 'allow' user: 'block' #------------------------------ + # Sandbox API + #------------------------------ + - name: 'meep-sandbox-api' + path: '/sandbox-api/v1' + sbox: true + default: + mode: 'allow' + fileservers: + - name: 'Api' + path: '/api' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'UserApi' + path: '/user-api' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'allow' + - name: 'login' + path: '/login' + method: 'POST' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'logout' + path: '/logout' + method: 'POST' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'sandboxAppInstancesGET' + path: '/sandboxAppInstances' + method: 'GET' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'sandboxLogsSubscriptionsPOST' + path: '/sandboxLogsSubscriptions' + method: 'POST' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'sandboxLogsSubscriptionsDELETE' + path: '/sandboxLogsSubscriptions/{subscription_reference}' + method: 'DELETE' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'sandboxNetworkScenariosGET' + path: '/sandboxNetworkScenarios' + method: 'GET' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'sandboxNetworkScenariosPOST' + path: 'sandboxNetworkScenarios/{network_scenario_id}' + method: 'POST' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + - name: 'SandboxNetworkScenariosDELETE' + path: 'sandboxNetworkScenarios/{network_scenario_id}' + method: 'DELETE' + mode: 'allow' + roles: + admin: 'allow' + user: 'allow' + #------------------------------ # RNI Service (Sbox) #------------------------------ - name: 'meep-rnis' -- GitLab From 2224489055f1ae33f8700f2e3237f384bac4a32a Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 24 Apr 2024 13:54:00 +0200 Subject: [PATCH 12/58] Update permissions --- config/.meepctl-repocfg.yaml | 267 +++++++++++++++++++---------------- config/permissions.yaml | 4 +- 2 files changed, 148 insertions(+), 123 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 75e0095..895a77c 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -30,17 +30,17 @@ repo: # user supplied resources user: # user supplied frontend UI located @ .meep/user/frontend - frontend: false + frontend: true # user supplied platform swagger UI located @ .meep/user/swagger # user supplied sandbox swagger UI located @ .meep/user/sandbox-swagger - swagger: false + swagger: true # platform ingress configuration ingress: # host name host: mec-platform.etsi.org # enable https only (redirect http requests to https port) - https-only: false + https-only: true # bind to host ports (true) or node ports (false) host-ports: true # http port number @@ -67,27 +67,27 @@ repo: # GitHub OAuth provider config github: # enable GitHub OAuth - enabled: false + enabled: true # authorization url auth-url: https://github.com/login/oauth/authorize # access token url token-url: https://github.com/login/oauth/access_token # OAuth redirect URI - redirect-uri: https://mec-platform.etsi.org/auth/v1/authorize + redirect-uri: https://mec-platform.etsi.org/platform-ctrl/v1/authorize # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-github # GitLab OAuth provider config gitlab: # enable GitLab OAuth - enabled: false + enabled: true # authorization url - auth-url: https://gitlab.com/oauth/authorize + auth-url: https://forge.etsi.org/rep/oauth/authorize # access token url - token-url: https://gitlab.com/oauth/token + token-url: https://forge.etsi.org/rep/oauth/token # OAuth redirect URI - redirect-uri: https://mec-platform.etsi.org/auth/v1/authorize + redirect-uri: https://mec-platform.etsi.org/platform-ctrl/v1/authorize # GitLab api url - # api-url: https://gitlab.com + api-url: https://forge.etsi.org/rep/api/v4 # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-gitlab @@ -96,9 +96,9 @@ repo: # Influx configuration influx: # enable influx data backups - enabled: false + enabled: true # object store url - url: my-object-store-fqdn + url: https://metrics.mec-platform.etsi.org/ # object store configuration secret secret: meep-influx-objstore-config # Number of days to retain daily data backups @@ -108,13 +108,13 @@ repo: # external labels added to prometheus metrics external-labels: # deployment region (geographic or logical) - region: idcc + region: etsi # function being monitored monitor: advantedge # prometheus environment (dev|prod) promenv: prod # unique deployment identifier - replica: platform-ip + replica: 172.29.10.52 # Thanos long-term storage thanos: # enable Thanos @@ -167,7 +167,7 @@ repo: # Influx configuration influx: # enable influx garbage collection - enabled: false + enabled: true # list of databases that must not be removed exceptions: # - my_db_to_keep @@ -179,14 +179,8 @@ repo: # Default monitoring dashboards dashboards: - network-metrics-point-to-point: dashboards/network-metrics-point-to-point.json - network-metrics-aggregation: dashboards/network-metrics-aggregation.json - wireless-metrics-point-to-point: dashboards/wireless-metrics-point-to-point.json - wireless-metrics-aggregation: dashboards/wireless-metrics-aggregation.json - http-single-log: dashboards/http-log-byId.json - http-logs-aggregation: dashboards/http-loggers.json + mec-sandbox: dashboards/mec-sandbox.json platform-advantedge: dashboards/platform-advantedge.json - # platform-advantedge: dashboards/platform-advantedge-thanos.json platform-k8s: dashboards/platform-k8s.json runtime-environment-node: dashboards/runtime-environment-node.json runtime-environment-k8s-cluster: dashboards/runtime-environment-k8s-cluster.json @@ -237,7 +231,7 @@ repo: # location of entry script 'entrypoint.sh': go-apps/meep-auth-svc/entrypoint.sh # location of REST API permissions file - 'permissions.yaml': config/permissions-open.yaml + 'permissions.yaml': config/permissions.yaml meep-ingress-certs: # enable meepctl build build: false @@ -275,7 +269,7 @@ repo: lint: true # list of dependencies pods to monitor dependency-pods: - # - meep-cert-manager + - meep-cert-manager - meep-couchdb - meep-docker-registry - meep-grafana @@ -296,18 +290,18 @@ repo: # list of sandbox pods to monitor sandbox-pods: - meep-gis-engine - - meep-loc-serv + # - meep-loc-serv - meep-metrics-engine - - meep-mg-manager - - meep-rnis - - meep-dai - - meep-tm - - meep-wais - - meep-ams + # - meep-mg-manager + # - meep-rnis + # - meep-dai + # - meep-tm + # - meep-wais + # - meep-ams - meep-sandbox-ctrl - - meep-tc-engine - - meep-app-enablement - - meep-vis + # - meep-tc-engine + # - meep-app-enablement + # - meep-vis # location of API specifications api: - name: 'AdvantEDGE Monitoring Engine REST API' @@ -372,7 +366,7 @@ repo: lint: true # location of API specifications api: - - name: 'AdvantEDGE HTTP REST API' + - name: 'AdvantEDGE Platform Controller REST API' file: go-apps/meep-sandbox-api/api/swagger.yaml # location of user supplied API specifications user-api: @@ -381,9 +375,9 @@ repo: # location of entry script 'entrypoint.sh': go-apps/meep-sandbox-api/entrypoint.sh # location of Swagger UI - swagger: js-apps/meep-swagger-ui + #swagger: js-apps/meep-swagger-ui # location of AdvantEDGE frontend - frontend: bin/meep-frontend + #frontend: bin/meep-frontend meep-virt-engine: # location of source code src: go-apps/meep-virt-engine @@ -413,7 +407,7 @@ repo: meep-metrics-engine: charts/meep-metrics-engine meep-mg-manager: charts/meep-mg-manager meep-rnis: charts/meep-rnis - meep-dai: charts/meep-dai +# meep-dai: charts/meep-dai meep-tm: charts/meep-tm meep-wais: charts/meep-wais meep-ams: charts/meep-ams @@ -425,18 +419,18 @@ repo: # list of sandbox specific pods sandbox-pods: - meep-gis-engine - - meep-loc-serv + # - meep-loc-serv - meep-metrics-engine - - meep-mg-manager - - meep-rnis - - meep-dai - - meep-tm - - meep-wais - - meep-ams + # - meep-mg-manager + # - meep-rnis + # - meep-dai + # - meep-tm + # - meep-wais + # - meep-ams - meep-sandbox-ctrl - - meep-tc-engine - - meep-app-enablement - - meep-vis + # - meep-tc-engine + # - meep-app-enablement + # - meep-vis meep-webhook: # location of source code src: go-apps/meep-webhook @@ -520,6 +514,8 @@ repo: file: go-apps/meep-ams/api/swagger.yaml # location of user supplied API specifications user-api: + - name: 'Application Mobility Service REST API' + file: config/api/ams-api.yaml # resources available to docker container image docker-data: # location of entry script @@ -554,6 +550,10 @@ repo: file: go-apps/meep-app-enablement/api/service-mgmt/swagger.yaml # location of user supplied API specifications user-api: + - name: 'MEC Application Support API' + file: config/api/app-support.yaml + - name: 'MEC Service Management API' + file: config/api/service-mgmt.yaml # resources available to docker container image docker-data: # location of entry script @@ -615,6 +615,8 @@ repo: file: go-apps/meep-loc-serv/api/swagger.yaml # location of user supplied API specifications user-api: + - name: 'Location Service REST API' + file: config/api/loc-serv-api.yaml # resources available to docker container image docker-data: # location of entry script @@ -663,15 +665,15 @@ repo: # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-mg-manager.yaml # enable meepctl build - build: true + build: false # enable meepctl dockerize - dockerize: true + dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # supports code coverage measurement when built in codecov mode codecov: true # supports linting - lint: true + lint: false # location of API specifications api: - name: 'AdvantEDGE Mobility Group Service REST API' @@ -759,15 +761,15 @@ repo: # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-tc-engine.yaml # enable meepctl build - build: true + build: false # enable meepctl dockerize - dockerize: true + dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # supports code coverage measurement when built in codecov mode codecov: true # supports linting - lint: true + lint: false meep-tc-sidecar: # location of source code src: go-apps/meep-tc-sidecar @@ -783,40 +785,6 @@ repo: codecov: false # supports linting lint: true - meep-tm: - # location of source code - src: go-apps/meep-tm - # location of binary - bin: bin/meep-tm - # location of deployment chart - chart: charts/meep-tm - # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-tm.yaml - # extra build flags - build-flags: - - -mod=vendor - # enable meepctl build - build: true - # enable meepctl dockerize - dockerize: true - # enable meepctl deploy/delete - deploy: true - # supports code coverage measurement when built in codecov mode - codecov: true - # supports linting - lint: true - # location of API specifications - api: - - name: 'AdvantEDGE MEC Bandwidth Management REST API' - file: go-apps/meep-tm/api/bwm/swagger.yaml - - name: 'AdvantEDGE MEC Multi-access Traffic Steering REST API' - file: go-apps/meep-tm/api/mts/swagger.yaml - # location of user supplied API specifications - user-api: - # resources available to docker container image - docker-data: - # location of entry script - 'entrypoint.sh': go-apps/meep-tm/entrypoint.sh meep-wais: # location of source code src: go-apps/meep-wais @@ -845,19 +813,21 @@ repo: file: go-apps/meep-wais/api/swagger.yaml # location of user supplied API specifications user-api: + - name: 'WLAN Access Information Service REST API' + file: config/api/wais-api.yaml # resources available to docker container image docker-data: # location of entry script 'entrypoint.sh': go-apps/meep-wais/entrypoint.sh - meep-vis: + meep-tm: # location of source code - src: go-apps/meep-vis + src: go-apps/meep-tm # location of binary - bin: bin/meep-vis + bin: bin/meep-tm # location of deployment chart - chart: charts/meep-vis + chart: charts/meep-tm # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-vis.yaml + chart-user-values: meep-tm.yaml # extra build flags build-flags: - -mod=vendor @@ -873,23 +843,65 @@ repo: lint: true # location of API specifications api: - - name: 'AdvantEDGE V2X Information Service REST API' - file: go-apps/meep-vis/api/swagger.yaml + - name: 'AdvantEDGE MEC Bandwidth Management REST API' + file: go-apps/meep-tm/api/bwm/swagger.yaml + - name: 'AdvantEDGE MEC Multi-access Traffic Steering REST API' + file: go-apps/meep-tm/api/mts/swagger.yaml # location of user supplied API specifications user-api: - # resources available to docker container image + # resources available to docker container image + - name: 'Bandwidth Management REST API' + file: config/api/bwm-api.yaml + - name: 'Multi-access Traffic Steering REST API' + file: config/api/mts-api.yaml docker-data: # location of entry script - 'entrypoint.sh': go-apps/meep-vis/entrypoint.sh - meep-dai: + 'entrypoint.sh': go-apps/meep-tm/entrypoint.sh +# meep-dai: +# # location of source code +# src: go-apps/meep-dai +# # location of binary +# bin: bin/meep-dai +# # location of deployment chart +# chart: charts/meep-dai +# # user supplied value file located @ .meep/user/values (use below file name) +# chart-user-values: meep-dai.yaml +# # extra build flags +# build-flags: +# - -mod=vendor +# # enable meepctl build +# build: false #true +# # enable meepctl dockerize +# dockerize: false #true +# # enable meepctl deploy/delete +# deploy: false #true +# # supports code coverage measurement when built in codecov mode +# codecov: true +# # supports onboarded device application instantiation +# onboardedapp: true +# # supports linting +# lint: true +# # location of API specifications +# api: +# - name: 'AdvantEDGE Device Application Interface REST API' +# file: go-apps/meep-dai/api/swagger.yaml +# # location of user supplied API specifications +# user-api: +# - name: 'Device Application Interface REST API' +# file: config/api/dai-api.yaml +# # resources available to docker container image +# docker-data: +# # location of entry script +# 'entrypoint.sh': go-apps/meep-dai/entrypoint.sh + meep-vis: # location of source code - src: go-apps/meep-dai + src: go-apps/meep-vis # location of binary - bin: bin/meep-dai + bin: bin/meep-vis # location of deployment chart - chart: charts/meep-dai + chart: charts/meep-vis # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-dai.yaml + chart-user-values: meep-vis.yaml # extra build flags build-flags: - -mod=vendor @@ -901,20 +913,22 @@ repo: deploy: true # supports code coverage measurement when built in codecov mode codecov: true - # supports onboarded device application instantiation - onboardedapp: true # supports linting lint: true # location of API specifications api: - - name: 'AdvantEDGE Device Application Interface Service REST API' - file: go-apps/meep-dai/api/swagger.yaml + - name: 'AdvantEDGE V2X Information REST API' + file: go-apps/meep-vis/api/swagger.yaml # location of user supplied API specifications user-api: + - name: 'V2X Information Service REST API' + file: config/api/vis-api.yaml # resources available to docker container image docker-data: # location of entry script - 'entrypoint.sh': go-apps/meep-dai/entrypoint.sh + 'entrypoint.sh': go-apps/meep-vis/entrypoint.sh + # location of grid map file + 'grid_map.yaml': go-packages/meep-vis-traffic-mgr/grid_map.yaml #------------------------------ # Dependencies @@ -997,6 +1011,17 @@ repo: chart: charts/kube-state-metrics # user supplied value file located @ .meep/user/values (use below file name) chart-user-values: meep-kube-state-metrics.yaml + meep-minio: + # enable meepctl build -> deps are never built + build: false + # enable meepctl dockerize -> deps are never dockerized + dockerize: false + # enable meepctl deploy/delete + deploy: false + # location of deployment chart + chart: charts/minio + # user supplied value file located @ .meep/user/values (use below file name) + chart-user-values: meep-minio.yaml meep-open-map-tiles: # enable meepctl build -> deps are never built build: false @@ -1047,7 +1072,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: false + deploy: true # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1058,7 +1083,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: false + deploy: true # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1240,6 +1265,16 @@ repo: src: go-packages/meep-users # supports linting lint: true +# meep-dai-client: +# # location of source code +# src: go-packages/meep-dai-client +# # supports linting +# lint: false + meep-wais-client: + # location of source code + src: go-packages/meep-wais-client + # supports linting + lint: false meep-vis-client: # location of source code src: go-packages/meep-vis-client @@ -1249,11 +1284,6 @@ repo: # location of source code src: go-packages/meep-vis-traffic-mgr # supports linting - lint: true - meep-wais-client: - # location of source code - src: go-packages/meep-wais-client - # supports linting lint: false meep-watchdog: # location of source code @@ -1265,11 +1295,6 @@ repo: src: go-packages/meep-websocket # supports linting lint: true - meep-dai-client: - # location of source code - src: go-packages/meep-dai-client - # supports linting - lint: false # Javascript Packages js-packages: diff --git a/config/permissions.yaml b/config/permissions.yaml index 8b9c0d2..87c8286 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -689,14 +689,14 @@ services: roles: admin: 'allow' user: 'allow' - - name: 'sandboxNetworkScenariosPOST' + - name: 'sandboxNetworkScenarioPOST' path: 'sandboxNetworkScenarios/{network_scenario_id}' method: 'POST' mode: 'allow' roles: admin: 'allow' user: 'allow' - - name: 'SandboxNetworkScenariosDELETE' + - name: 'SandboxNetworkScenarioDELETE' path: 'sandboxNetworkScenarios/{network_scenario_id}' method: 'DELETE' mode: 'allow' -- GitLab From e486e0a987b87aaf3997844c7d9c9df0ea81dc11 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 25 Apr 2024 11:40:36 +0200 Subject: [PATCH 13/58] Align meep-vis with MEC 030 v3.2.2 --- config/api/vis-api.yaml | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/config/api/vis-api.yaml b/config/api/vis-api.yaml index 53f366a..ee20599 100644 --- a/config/api/vis-api.yaml +++ b/config/api/vis-api.yaml @@ -9,9 +9,9 @@ info: license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters - version: 3.2.1 + version: 3.2.2 externalDocs: - description: "ETSI GS MEC 030 V2X Information Services API, v3.2.1" + description: "ETSI GS MEC 030 V2X Information Services API, v3.1.1" url: https://www.https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.02.01_60/ servers: - url: https://localhost/sandboxname/vis/v2 @@ -3001,6 +3001,31 @@ components: subscription: $ref: '#/components/schemas/LinkType' description: 'Hyperlink related to the resource. ' + ExpiryNotification: + properties: + _links: + description: Hyperlink related to the resource. + properties: + subscription: + $ref: '#/components/schemas/LinkType' + required: + - subscription + type: object + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Structure (inlined) + expiryDeadline: + $ref: '#/components/schemas/TimeStamp' + notificationType: + description: Shall be set to "ExpiryNotification". + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + required: + - notificationType + - _links + - expiryDeadline + type: object + x-etsi-ref: 6.4.4 responses: "204": description: No Content -- GitLab From 6b3a02841833c3530a26518f5fa7c6db4a84ea9b Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Wed, 1 May 2024 04:50:23 +0000 Subject: [PATCH 14/58] Remove unnecessary Endpoints of v2.2.1 and update the Reqest Bodies and description of new Endpoints as per v3.1.1 --- config/api/loc-serv-api.yaml | 2459 +++++++++------------------------- 1 file changed, 653 insertions(+), 1806 deletions(-) diff --git a/config/api/loc-serv-api.yaml b/config/api/loc-serv-api.yaml index 6861ec1..a09a3c3 100644 --- a/config/api/loc-serv-api.yaml +++ b/config/api/loc-serv-api.yaml @@ -14,7 +14,7 @@ externalDocs: description: ETSI MEC013 V3.1.1 Location API url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/013/03.01.01_60/gs_mec013v030101p.pdf' servers: - - url: 'https://localhost/sandboxname/location/v2' + - url: 'https://localhost/sandboxname/location/v3' tags: - name: 'location' paths: @@ -22,11 +22,10 @@ paths: get: tags: - 'location' - summary: 'UE Distance Lookup of a specific UE' - description: 'UE Distance Lookup between terminals or a terminal and a location' + summary: 'Retrieves distance information between a user and a location or between two users' + description: 'The GET method is used to query information about distance from a user to a location or between two users.' operationId: distanceGET parameters: - # - $ref: '#/components/parameters/Query.Requester' - $ref: '#/components/parameters/Query.AddressMandatory' - $ref: '#/components/parameters/Query.Latitude' - $ref: '#/components/parameters/Query.Longitude' @@ -57,8 +56,8 @@ paths: get: tags: - 'location' - summary: 'UE Location Lookup of a specific UE or group of UEs' - description: 'UE Location Lookup of a specific UE or group of UEs' + summary: 'Retrieves location information for specific UE (User Equipment) or group of UEs (User Equipments)' + description: 'The GET method is used to query location information about a specific UE (User Equipment) or a group of UEs (User Equipments) .' operationId: usersGET parameters: - $ref: '#/components/parameters/Query.ZoneId' @@ -91,8 +90,8 @@ paths: get: tags: - 'location' - summary: 'Zones information Lookup' - description: 'Used to get a list of identifiers for zones authorized for use by the application.' + summary: 'Retrieves information about one or more specific zones or a list of zones.' + description: 'The GET method is used to query the information about one or more specific zones or a list of zones.' operationId: zonesGET parameters: - $ref: '#/components/parameters/Query.ZoneId_' @@ -123,8 +122,8 @@ paths: get: tags: - 'location' - summary: 'Zones information Lookup' - description: 'Used to get the information for an authorized zone for use by the application.' + summary: 'Retrieves detailed information about a specific zone by its zoneId' + description: The GET method is used to query the information about a specific zone' operationId: zonesGetById parameters: - $ref: '#/components/parameters/Path.ZoneId' @@ -155,8 +154,8 @@ paths: get: tags: - 'location' - summary: 'Radio Node Location Lookup' - description: 'Radio Node Location Lookup to retrieve a list of radio nodes associated to a zone.' + summary: 'Retrieves information about specific access points or a list of access points under a given zoneId' + description: 'The GET method is used to query the information about a specific access point or a list of access points under a zone' operationId: apGET parameters: - $ref: '#/components/parameters/Path.ZoneId' @@ -188,8 +187,8 @@ paths: get: tags: - 'location' - summary: 'Radio Node Location Lookup' - description: 'Radio Node Location Lookup to retrieve a radio node associated to a zone.' + summary: 'Retrieves detailed information about a specific access point under a given zoneId' + description: 'The GET method is used to query the information about a specific access point under a zone.' operationId: apByIdGET parameters: - $ref: '#/components/parameters/Path.ZoneId' @@ -270,7 +269,6 @@ paths: description: 'The POST method is used to create a new subscription to area notifications.' operationId: areaSubPOST requestBody: - description: 'Subscription to be created' required: true content: application/json: @@ -281,25 +279,34 @@ paths: $ref: '#/components/schemas/UserAreaSubscription' example: userAreaSubscription: - subscriptionType: 'userAreaSubscription' + subscriptionType: 'UserAreaSubscription' clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/area_notification/some-id' - _links: - self: - href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + requestTestNotification : true + callbackReference: 'http://my.callback.com/user_area_notification/some-id' areaDefine: shape: 1 points: - - latitude: -80.86302 - longitude: 41.277306 - radius: + - latitude: 43.748993 + longitude: 7.437573 + radius: 200 addressList: - - acr:10.0.0.1 - - acr:10.0.0.2 - trackingAccuracy: 10.99 + - 10.100.0.4 + locationEventCriteria: + - ENTERING_AREA_EVENT + trackingAccuracy: 10 + reportingLocationReq: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 expiryDeadline: - seconds: 1973507343 - nanoSeconds": 0 + seconds: 1977836800 + nanoseconds: 0 + description: | + The entity body in the request contains data type of the specific UE + location event subscription that is to be created, where the data type + options are listed below and defined in clause 6.3.8: + - UserAreaSubscription responses: '201': description: 'Indicates successful resource creation, where the resource URI shall be returned in the HTTP Location header field.' @@ -311,26 +318,29 @@ paths: userAreaSubscription: $ref: '#/components/schemas/UserAreaSubscription' example: - - userAreaSubscription: - subscriptionType: 'userAreaSubscription' - clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/area_notification/some-id' - _links: - self: - href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 - areaDefine: + userAreaSubscription: + subscriptionType: 'userAreaSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user_area_notification/some-id' + requestTestNotification: true + _links: + self: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + areaDefine: shape: 1 points: - - latitude: -80.86302 - longitude: 41.277306 - radius: - addressList: - - acr:10.0.0.1 - - acr:10.0.0.2 - trackingAccuracy: 10.99 - expiryDeadline: - seconds: 1973507343 - nanoSeconds": 0 + - latitude: 43.748993 + longitude: 7.437573 + radius: 200 + addressList: + - 10.100.0.4 + trackingAccuracy: 10 + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 + '400': $ref: '#/components/responses/400' '401': @@ -381,7 +391,7 @@ paths: get: tags: - 'location' - summary: 'Retrieve subscription information' + summary: 'Retrieves information about a specific subscription using its subscription ID' description: 'The GET method is used to retrieve information about this subscription.' operationId: areaSubGET parameters: @@ -396,16 +406,31 @@ paths: required: - userAreaSubscription properties: - userAreaNotification: - $ref: '#/components/schemas/UserAreaNotification' + userAreaSubscription: + $ref: '#/components/schemas/UserAreaSubscription' example: - - userAreaNotification: - notificationType: 'UserAreaNotification' - address: 'acr:10.0.0.1' - userLocationEvent: 'ENTERING_AREA_EVENT' - _links: - subscription: - href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + userAreaSubscription: + subscriptionType: 'userAreaSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/area_notification/some-id' + requestTestNotification: true + _links: + self: + href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + areaDefine: + shape: 1 + points: + - latitude: 43.748993 + longitude: 7.437573 + radius: 200 + addressList: + - 10.100.0.4 + trackingAccuracy: 10 + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline: + seconds: 1973507343 + nanoSeconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -422,27 +447,45 @@ paths: put: tags: - 'location' - summary: 'Updates a subscription information' - description: 'The PUT method is used to update the existing subscription.' + summary: 'Updates an existing subscription with new data, replacing the current subscription details.' + description: 'The PUT method is used to update the existing subscription. PUT method in this case has "replace" semantics.' operationId: areaSubPUT requestBody: - description: 'Subscription to be modified' required: true content: application/json: schema: type: object properties: - userAreaNotification: - $ref: '#/components/schemas/UserAreaNotification' + userAreaSubscription: + $ref: '#/components/schemas/UserAreaSubscription' example: - userAreaNotification: - notificationType: 'UserAreaNotification' - address: 'acr:10.0.0.1' - userLocationEvent: 'ENTERING_AREA_EVENT' - _links: - subscription: - href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + userAreaSubscription: + subscriptionType: 'userAreaSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user_area_notification/some-id' + _links: + self: + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/area/subscription123" + areaDefine: + shape: 1 + points: + - latitude: 43.748993 + longitude: 7.437573 + radius: 200 + addressList: + - 10.100.0.4 + trackingAccuracy: 10 + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 + + description: | + The entity body in the request contains data type of the specific UE + location event subscription that is to be created, where the data type + options are listed below and defined in clause 6.3.8: + - UserAreaSubscription + parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -453,16 +496,28 @@ paths: schema: type: object properties: - userAreaNotification: - $ref: '#/components/schemas/UserAreaNotification' + UserAreaSubscription: + $ref: '#/components/schemas/UserAreaSubscription' example: - userAreaNotification: - notificationType: 'UserAreaNotification' - address: 'acr:10.0.0.1' - userLocationEvent: 'ENTERING_AREA_EVENT' - _links: - subscription: - href: http://meAppServer.example.com/location/v2/subscriptions/area/subscription123 + userAreaSubscription: + subscriptionType: 'userAreaSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/area_notification/some-id' + _links: + self: + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/users/subscription123" + areaDefine: + shape: 1 + points: + - latitude: 43.748993 + longitude: 7.437573 + radius: 200 + addressList: + - 10.100.0.4 + trackingAccuracy: 10 + expiryDeadline: + seconds: 1973507343 + nanoSeconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -483,7 +538,7 @@ paths: delete: tags: - 'location' - summary: 'Cancel a subscription' + summary: 'Cancels the existing subscription, deleting the resource representing the subscription' description: 'The DELETE method is used to cancel the existing subscription.' operationId: areaSubDELETE parameters: @@ -503,13 +558,13 @@ paths: /subscriptions/distance: get: tags: - - 'location' + - 'location' summary: 'Retrieves all active subscriptions to distance change notifications' description: 'This operation is used for retrieving all active subscriptions to a distance change notifications.' operationId: distanceSubListGET responses: '200': - description: 'Response to retrieve area subscriptions' + description: "Upon success, a response body containing the list of links to requestor's subscriptions is returned." content: application/json: schema: @@ -520,44 +575,53 @@ paths: notificationSubscriptionList: $ref: '#/components/schemas/NotificationSubscriptionList' example: - notificationSubscriptionList: + - notificationSubscriptionList: subscription: - href: 'http://meAppServer.example.com/location/v2/subscriptions/distance/subscription123' subscriptionType: 'UserDistanceSubscription' resourceURL: href: 'http://meAppServer.example.com/location/v2/subscriptions/distance' - post: tags: - - 'location' + - 'location' summary: 'Creates a subscription for distance change notification' - description: 'Creates a subscription to the Location Service for a distance change notification.' + description: 'The POST method is used to create a new subscription to user distance notifications.' operationId: distanceSubPOST requestBody: - description: 'Subscription to be created' required: true content: application/json: schema: type: object properties: - distanceNotificationSubscription: - $ref: '#/components/schemas/DistanceNotificationSubscription' - example: - userDistanceSubscription: - subscriptionType: 'UserDistanceSubscription' - clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/user-distance/some-id' - referenceAddress: - - '10.0.0.3' - monitoredAddress: - - '10.0.0.1' - - '10.0.0.2' - distance: 100 - trackingAccuracy: 10 - criteria: 'AllWithinDistance' - checkImmediate: true - + userDistanceSubscription: + $ref: '#/components/schemas/UserDistanceSubscription' + example: + userDistanceSubscription: + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/distance_notification/some-id' + referenceAddress: + - '10.10.0.1' + monitoredAddress: + - '10.100.0.1' + distance: 100 + trackingAccuracy: 10 + requestTestNotification: true + criteria: 'AllWithinDistance' + checkImmediate: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 + description: | + The entity body in the request contains data type of the user + distance subscription that is to be created, where the data type + options are listed below and defined in clauses 6.3.9: + - UserDistanceSubscription. responses: '201': description: 'Successful subscription' @@ -570,18 +634,25 @@ paths: $ref: '#/components/schemas/UserDistanceSubscription' example: userDistanceSubscription: - subscriptionType: 'UserDistanceSubscription' - clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/user-distance/some-id' - referenceAddress: - - 'acr:10.0.0.3' - monitoredAddress: - - 'acr:10.0.0.1' - - 'acr:10.0.0.2' - distance: 100 - trackingAccuracy: 10 - criteria: 'AllWithinDistance' - checkImmediate: true + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - '10.10.0.1' + monitoredAddress: + - '10.100.0.1' + distance: 100 + trackingAccuracy: 10 + requestTestNotification: true + criteria: 'AllWithinDistance' + checkImmediate: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 '400': $ref: '#/components/responses/400' '401': @@ -598,7 +669,6 @@ paths: $ref: '#/components/responses/422' '429': $ref: '#/components/responses/429' - callbacks: notification: '{$request.body#/userDistanceSubscription.callbackReference}': @@ -618,33 +688,32 @@ paths: $ref: '#/components/schemas/UserDistanceNotification' example: userDistanceNotification: - notificationType: 'UserDistanceNotification' - timestamp: - seconds: 1673507343 - nanoSeconds": 0 - monitoredUsers: - - user: - address: 'acr:10.0.0.1' - accessPointId: '001010000000000000000000000000001' - zoneId: 'zone01' - timestamp: - seconds: 1673507343 - nanoSeconds": 0 - resourceURL: 'http://meAppServer.example.com/location/v3/queries/users' - distanceEvent: 'AllWithinDistance' - _links: - subscription: - href: 'http://meAppServer.example.com/location/v3/subscriptions/distance/subscription123' + notificationType: 'UserDistanceNotification' + timestamp: + seconds: 1673507343 + nanoSeconds": 0 + monitoredUsers: + - user: + address: 'acr:10.0.0.1' + accessPointId: '001010000000000000000000000000001' + zoneId: 'zone01' + timestamp: + seconds: 1673507343 + nanoSeconds": 0 + resourceURL: 'http://meAppServer.example.com/location/v3/queries/users' + distanceEvent: 'AllWithinDistance' + _links: + subscription: + href: 'http://meAppServer.example.com/location/v3/subscriptions/distance/subscription123' responses: '204': $ref: '#/components/responses/204' - - x-swagger-router-controller: "subscriptions" + x-swagger-router-controller: 'subscriptions' /subscriptions/distance/{subscriptionId}: get: tags: - 'location' - summary: 'Retrieve user distance subscription information' + summary: 'Retrieve user distance subscription information using its subscription ID' description: 'The GET method is used to retrieve information about user distance subscription subscription.' operationId: distanceSubGET parameters: @@ -663,18 +732,25 @@ paths: $ref: '#/components/schemas/UserDistanceSubscription' example: userDistanceSubscription: - subscriptionType: 'UserDistanceSubscription' - clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/user-distance/some-id' - referenceAddress: - - 'acr:10.0.0.3' - monitoredAddress: - - 'acr:10.0.0.1' - - 'acr:10.0.0.2' - distance: 100 - trackingAccuracy: 10 - criteria: 'AllWithinDistance' - checkImmediate: true + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - '10.10.0.1' + monitoredAddress: + - '10.100.0.1' + distance: 100 + trackingAccuracy: 10 + requestTestNotification: true + criteria: 'AllWithinDistance' + checkImmediate: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 '400': $ref: '#/components/responses/400' '401': @@ -691,11 +767,10 @@ paths: put: tags: - 'location' - summary: 'Updates a user distance subscription information' + summary: 'Updates a user distance subscription information with new data, replacing the current subscription details' description: 'The PUT method is used to update the existing user distance subscription.' operationId: distanceSubPUT requestBody: - description: 'Subscription to be modified' required: true content: application/json: @@ -706,18 +781,33 @@ paths: $ref: '#/components/schemas/UserDistanceSubscription' example: userDistanceSubscription: - subscriptionType: 'UserDistanceSubscription' - clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/user-distance/some-id' - referenceAddress: - - 'acr:10.0.0.3' - monitoredAddress: - - 'acr:10.0.0.1' - - 'acr:10.0.0.2' - distance: 100 - trackingAccuracy: 10 - criteria: 'AllWithinDistance' - checkImmediate: true + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + _links: + self: + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/distance/subscription123" + callbackReference: 'http://my.callback.com/distance_notification/some-id' + referenceAddress: + - '10.10.0.1' + monitoredAddress: + - '10.100.0.1' + distance: 100 + trackingAccuracy: 10 + requestTestNotification: true + criteria: 'AllWithinDistance' + checkImmediate: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 + description: | + The entity body in the request contains data type of the user + distance subscription that is to be created, where the data type + options are listed below and defined in clauses 6.3.9: + - UserDistanceSubscription. parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -732,18 +822,28 @@ paths: $ref: '#/components/schemas/UserDistanceSubscription' example: userDistanceSubscription: - subscriptionType: 'UserDistanceSubscription' - clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/user-distance/some-id' - referenceAddress: - - 'acr:10.0.0.3' - monitoredAddress: - - 'acr:10.0.0.1' - - 'acr:10.0.0.2' - distance: 100 - trackingAccuracy: 10 - criteria: 'AllWithinDistance' - checkImmediate: true + subscriptionType: 'UserDistanceSubscription' + clientCorrelator: '0123' + _links: + self: + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/distance/subscription123" + callbackReference: 'http://my.callback.com/user-distance/some-id' + referenceAddress: + - '10.10.0.1' + monitoredAddress: + - '10.100.0.1' + distance: 100 + trackingAccuracy: 10 + requestTestNotification: true + criteria: 'AllWithinDistance' + checkImmediate: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 '400': $ref: '#/components/responses/400' '401': @@ -763,9 +863,9 @@ paths: x-swagger-router-controller: 'subscriptions' delete: tags: - - 'location' - summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' + - 'location' + summary: 'Cancels the existing subscription, deleting the resource representing the subscription.' + description: 'The DELETE method is used to cancel the existing subscription.' operationId: distanceSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' @@ -781,51 +881,115 @@ paths: '429': $ref: '#/components/responses/429' x-swagger-router-controller: 'subscriptions' - /subscriptions/periodic: + /subscriptions/users: get: tags: - - 'location' - summary: 'Retrieves all active subscriptions to periodic notifications' - description: 'This operation is used for retrieving all active subscriptions to periodic notifications.' - operationId: periodicSubListGET + - 'location' + summary: 'Retrieves information about the subscriptions for the requestor' + description: 'The GET method is used to request information about the subscriptions for this requestor. Upon success, the response contains entity body with the list of links to the subscriptions that are present for the requestor.' + operationId: userSubListGET + parameters: + - name: subscription_type + in: query + description: Filter subscriptions by type + schema: + type: string + enum: [event, periodic] + required: false + - name: address + in: query + description: Address of the user + schema: + type: string + required: false responses: '200': - description: 'Response to retrieve area subscriptions' + description: 'Response to retrieve user tracking subscriptions' content: application/json: schema: - type: object - required: - - notificationSubscriptionList - properties: - notificationSubscriptionList: - $ref: '#/components/schemas/NotificationSubscriptionList' + $ref: '#/components/schemas/NotificationSubscriptionList' + example: + - notificationSubscriptionList: + subscription: + - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription123' + subscriptionType: 'UserLocationEventSubscription' + - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription456' + subscriptionType: 'UserLocationPeriodicSubscription' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/users' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '406': + $ref: '#/components/responses/406' + '429': + $ref: '#/components/responses/429' post: tags: - - 'location' - summary: 'Creates a subscription for periodic notification' - description: 'Creates a subscription to the Location Service for a periodic notification.' - operationId: periodicSubPOST + - 'location' + summary: 'Create subscription to UE location notification.' + description: 'The POST method is used to create a new subscription to UE location notifications. Upon success, the response contains entity body describing the created subscription.' + operationId: userSubPOST requestBody: - description: Subscription to be created required: true content: application/json: schema: type: object properties: - periodicNotificationSubscription: - $ref: '#/components/schemas/PeriodicNotificationSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' + example: + userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + clientCorrelator: "0123" + callbackReference: 'http://my.callback.com/user-location-event-notification/some-id' + address: '10.100.0.1' + requestTestNotification: true + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 + locationEventCriteria: + - ENTERING_AREA_EVENT + description: | + The entity body in the request contains the data type of the specific UE location event subscription that is to be created. The available data types are: + - UserLocationEventSubscription + - UserLocationPeriodicSubscription responses: '201': - description: 'Successful subscription' + description: 'Indicates successful subscription creation.' content: application/json: schema: type: object properties: - periodicNotificationSubscription: - $ref: '#/components/schemas/PeriodicNotificationSubscription' + userLocationEventSubscription: + $ref: '#/components/schemas/UserLocationEventSubscription' + userLocationPeriodicSubscription: + $ref: '#/components/schemas/UserLocationPeriodicSubscription' + example: + userLocationEventSubscription: + _links: + self: + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/distance/subscription123" + subscriptionType: 'UserLocationEventSubscription' + clientCorrelator: "0123" + callbackReference: 'http://my.callback.com/user-location-event-notification/some-id' + address: '10.100.0.1' + requestTestNotification: true + expiryDeadline: + seconds: 1973507343 + nanoSeconds: 0 + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -838,303 +1002,62 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' + callbacks: notification: - '{$request.body#/periodicNotificationSubscription.callbackReference.notifyURL}': + '{$request.body#/userLocationEventSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: periodicNotificationPOST + operationId: userNotificationPOST requestBody: - description: 'Subscription notification' + description: 'User LocationEvent Notification' required: true content: application/json: schema: type: object properties: - subscriptionNotification: - $ref: '#/components/schemas/SubscriptionNotification' + userLocationEventNotification: + $ref: '#/components/schemas/UserLocationEventNotification' + userLocationPeriodicNotification: + $ref: '#/components/schemas/UserLocationPeriodicNotification' + example: + userLocationEventNotification: + notificationType: 'UserLocationEventNotification' + timestamp: + seconds: 1673507343 + nanoseconds: 0 + address: 'acr:10.0.0.1' + userLocationEvent: 'ENTERING_AREA_EVENT' + zoneId: 'zone01' + accessPointId: '001010000000000000000000000000001' + _links: + subscription: + href: "http://meAppServer.example.com/location/v3/subscriptions/user/subscription123" responses: '204': $ref: '#/components/responses/204' x-swagger-router-controller: 'subscriptions' - /subscriptions/periodic/{subscriptionId}: + + /subscriptions/users/{subscriptionId}: get: tags: - - 'location' + - 'location' summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: periodicSubGET + description: 'The GET method is used to retrieve information about this subscription. Upon success, the response contains entity body with the data type describing the subscription. ' + operationId: userSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific Location event subscription is returned.' content: application/json: schema: type: object required: - - periodicNotificationSubscription - properties: - periodicNotificationSubscription: - $ref: '#/components/schemas/PeriodicNotificationSubscription' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - put: - tags: - - 'location' - summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: periodicSubPUT - requestBody: - description: 'Subscription to be modified' - required: true - content: - application/json: - schema: - type: object - properties: - periodicNotificationSubscription: - $ref: '#/components/schemas/PeriodicNotificationSubscription' - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Successful subscription to response to subscription notifications' - content: - application/json: - schema: - type: object - properties: - periodicNotificationSubscription: - $ref: '#/components/schemas/PeriodicNotificationSubscription' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '412': - $ref: '#/components/responses/412' - '422': - $ref: '#/components/responses/422' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: "subscriptions" - delete: - tags: - - 'location' - summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: periodicSubDELETE - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '204': - $ref: '#/components/responses/204' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - - /subscriptions/users: - get: - tags: - - 'location' - summary: 'Retrieves information about the subscriptions for the requestor' - description: 'The GET method is used to request information about the subscriptions for this requestor. Upon success, the response contains entity body with the list of links to the subscriptions that are present for the requestor.' - operationId: userSubListGET - parameters: - - name: subscription_type - in: query - description: Filter subscriptions by type - schema: - type: string - enum: [event, periodic] - required: false - - name: address - in: query - description: Address of the user - schema: - type: string - required: false - responses: - '200': - description: 'Response to retrieve user tracking subscriptions' - content: - application/json: - schema: - $ref: '#/components/schemas/NotificationSubscriptionList' - example: - - notificationSubscriptionList: - subscription: - - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription123' - subscriptionType: 'UserLocationEventSubscription' - - href: 'http://meAppServer.example.com/location/v2/subscriptions/users/subscription456' - subscriptionType: 'UserLocationPeriodicSubscription' - resourceURL: - href: 'http://meAppServer.example.com/location/v2/subscriptions/users' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - post: - tags: - - 'location' - summary: 'Create subscription to UE location.' - description: 'The POST method is used to create a new subscription to UE location notifications. Upon success, the response contains entity body describing the created subscription. ' - operationId: userSubPOST - requestBody: - description: 'Subscription to be created' - required: true - content: - application/json: - schema: - type: object - properties: - userLocationEventSubscription: - $ref: '#/components/schemas/UserLocationEventSubscription' - userLocationPeriodicSubscription: - $ref: '#/components/schemas/UserLocationPeriodicSubscription' - example: - - userLocationEventSubscription: - subscriptionType: 'UserLocationEventSubscription' - callbackReference: 'http://my.callback.com/user-location-notification/some-id' - address: '10.100.0.1' - requestTestNotification: true - expiryDeadline: - seconds: 1973507343 - nanoSeconds: 0 - locationEventCriteria: - - ENTERING_AREA_EVENT - - userLocationPeriodicSubscription: - subscriptionType: 'UserLocationPeriodicSubscription' - address: "10.100.0.1" - callbackReference: "http://my.callback.com/Periodic-location-notification/some-id" - clientCorrelator: "0123" - periodicEventInfo: - reportingAmount: 25 - reportingInterval: 10 - requestTestNotification: true - expiryDeadline: - seconds: 1973507343 - nanoSeconds: 0 - responses: - '201': - description: 'Indicates successful subscription creation.' - content: - application/json: - schema: - type: object - properties: - userLocationEventSubscription: - $ref: '#/components/schemas/UserLocationEventSubscription' - userLocationPeriodicSubscription: - $ref: '#/components/schemas/UserLocationPeriodicSubscription' - example: - - userLocationEventSubscription: - subscriptionType: 'UserLocationEventSubscription' - callbackReference: 'http://my.callback.com/user-location-notification/some-id' - address: 'acr:10.0.0.1' - locationEventCriteria: - - ENTERING_AREA_EVENT - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - callbacks: - notification: - '{$request.body#/userLocationEventSubscription.callbackReference}': - post: - summary: 'Callback POST used to send a notification' - description: 'Notification from Location service, content based on subscription type' - operationId: userNotificationPOST - requestBody: - description: 'User LocationEvent Notification' - required: true - content: - application/json: - schema: - type: object - properties: - userLocationEventNotification: - $ref: '#/components/schemas/UserLocationEventNotification' - userLocationPeriodicNotification: - $ref: '#/components/schemas/UserLocationPeriodicNotification' - example: - - userLocationEventNotification: - notificationType: 'UserLocationEventNotification' - timestamp: - seconds: 1673507343 - nanoseconds: 0 - address: 'acr:10.0.0.1' - userLocationEvent: 'ENTERING_AREA_EVENT' - zoneId: 'zone01' - accessPointId: '001010000000000000000000000000001' - _links: - subscription: - href: "http://meAppServer.example.com/location/v3/subscriptions/user/subscription123" - responses: - '204': - $ref: '#/components/responses/204' - x-swagger-router-controller: 'subscriptions' - - /subscriptions/users/{subscriptionId}: - get: - tags: - - 'location' - summary: 'Retrieve subscription information' - description: 'The GET method is used to retrieve information about this subscription. Upon success, the response contains entity body with the data type describing the subscription. ' - operationId: userSubGET - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Upon success, a response body containing data type describing the specific Location event subscription is returned.' - content: - application/json: - schema: - type: object - required: - - UserLocationEventSubscription + - UserLocationEventSubscription properties: userLocationEventSubscription: $ref: '#/components/schemas/UserLocationEventSubscription' @@ -1167,7 +1090,6 @@ paths: description: 'The PUT method is used to update the existing subscription. PUT method in this case has "replace" semantics. Upon successful operation, the target resource is updated with new Data Type received within the message body of the PUT request.' operationId: userSubPUT requestBody: - description: 'Subscription to be modified' required: true content: application/json: @@ -1179,12 +1101,12 @@ paths: userLocationPeriodicSubscription: $ref: '#/components/schemas/UserLocationPeriodicSubscription' example: - - userLocationEventSubscription: - links: + userLocationEventSubscription: + _links: self: - href: http://[hostIP]/sbox-xyz123/location/v2/subscriptions/users/subscription123" + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/users/subscription123" address: "10.100.0.1" - callbackReference: "http://my.callback.com/user-location-notification/some-id" + callbackReference: "http://my.callback.com/user-location-event-notification/some-id" locationEventCriteria: - "ENTERING_AREA_EVENT" requestTestNotification: true @@ -1192,22 +1114,11 @@ paths: seconds: 1973507343 nanoSeconds: 0 subscriptionType: "userLocationEventSubscription" - - - userLocationPeriodicSubscription: - links: - self: - href: http://[hostIP]/sbox-xyz123/location/v2/subscriptions/users/subscription123" - subscriptionType: 'UserLocationPeriodicSubscription' - address: "10.100.0.1" - callbackReference: "http://my.callback.com/Periodic-location-notification/some-id" - clientCorrelator: "0123" - periodicEventInfo: - reportingAmount: 25 - reportingInterval: 10 - requestTestNotification: true - expiryDeadline: - seconds: 1973507343 - nanoSeconds: 0 + description: | + The entity body in the request contains the data type of the specific UE location event subscription that is to be created. The available data types are: + - UserLocationEventSubscription + - UserLocationPeriodicSubscription + parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -1223,12 +1134,12 @@ paths: userLocationPeriodicSubscription: $ref: '#/components/schemas/UserLocationPeriodicSubscription' example: - - userLocationEventSubscription: - subscriptionType: 'UserLocationEventSubscription' - callbackReference: 'http://my.callback.com/user-location-notification/some-id' - address: 'acr:10.0.0.1' - locationEventCriteria: - - ENTERING_AREA_EVENT + userLocationEventSubscription: + subscriptionType: 'UserLocationEventSubscription' + callbackReference: 'http://my.callback.com/user-location-notification/some-id' + address: 'acr:10.0.0.1' + locationEventCriteria: + - ENTERING_AREA_EVENT '400': $ref: '#/components/responses/400' '401': @@ -1268,220 +1179,7 @@ paths: $ref: '#/components/responses/429' x-swagger-router-controller: 'subscriptions' - /subscriptions/userTracking: - get: - tags: - - 'location' - summary: 'Retrieves all active subscriptions to user tracking notifications' - description: 'This operation is used for retrieving all active subscriptions to user tracking notifications.' - operationId: userTrackingSubListGET - responses: - '200': - description: "Response to retrieve user tracking subscriptions" - content: - application/json: - schema: - type: object - required: - - notificationSubscriptionList - properties: - notificationSubscriptionList: - $ref: '#/components/schemas/NotificationSubscriptionList' - post: - tags: - - 'location' - summary: 'Creates a subscription for user tracking notification' - description: 'Creates a subscription to the Location Service for user tracking change notification.' - operationId: userTrackingSubPOST - requestBody: - description: 'Subscription to be created' - required: true - content: - application/json: - schema: - type: object - properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' - example: - userTrackingSubscription: - clientCorrelator: "0123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" - address: "10.100.0.1" - userEventCriteria: - - "Entering" - responses: - '201': - description: 'Successful subscription' - content: - application/json: - schema: - type: object - properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' - example: - userTrackingSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" - address: "10.100.0.1" - userEventCriteria: - - "Entering" - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - callbacks: - notification: - '{$request.body#/userTrackingSubscription.callbackReference.notifyURL}': - post: - summary: 'Callback POST used to send a notification' - description: 'Notification from Location service, content based on subscription type' - operationId: userTrackingNotificationPOST - requestBody: - description: 'Subscription notification' - required: true - content: - application/json: - schema: - type: object - properties: - zonalPresenceNotification: - $ref: '#/components/schemas/ZonalPresenceNotification' - responses: - '204': - $ref: '#/components/responses/204' - x-swagger-router-controller: 'subscriptions' - /subscriptions/userTracking/{subscriptionId}: - get: - tags: - - 'location' - summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: userTrackingSubGET - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Subscription information regarding subscription notifications' - content: - application/json: - schema: - type: object - required: - - userTrackingSubscription - properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - put: - tags: - - 'location' - summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: userTrackingSubPUT - requestBody: - description: 'Subscription to be modified' - required: true - content: - application/json: - schema: - type: object - properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' - example: - userTrackingSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" - address: "10.100.0.1" - userEventCriteria: - - "Entering" - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Successful subscription to response to subscription notifications' - content: - application/json: - schema: - type: object - properties: - userTrackingSubscription: - $ref: '#/components/schemas/UserTrackingSubscription' - example: - userTrackingSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/userTracking/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-user-tracking/some-id" - address: "10.100.0.1" - userEventCriteria: - - "Entering" - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '412': - $ref: '#/components/responses/412' - '422': - $ref: '#/components/responses/422' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - delete: - tags: - - 'location' - summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: userTrackingSubDELETE - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '204': - $ref: '#/components/responses/204' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - - /subscriptions/zones: + /subscriptions/zones: get: tags: - 'location' @@ -1521,524 +1219,76 @@ paths: subscriptionType: 'ZoneLocationEventSubscription' - href: 'http://meAppServer.example.com/location/v2/subscriptions/zones/subscription456' subscriptionType: 'ZoneStatusSubscription' - resourceURL: - href: 'http://meAppServer.example.com/location/v2/subscriptions/zones' - post: - tags: - - 'location' - summary: 'Creates a subscription to zone notifications' - description: 'The POST method is used to create a new subscription to zone notifications.' - operationId: zoneSubPOST - requestBody: - description: 'Subscription to be created' - required: true - content: - application/json: - schema: - type: object - properties: - zoneLocationEventSubscription: - $ref: '#/components/schemas/ZoneLocationEventSubscription' - zoneStatusSubscription: - $ref: '#/components/schemas/ZoneStatusSubscription' - example: - - zoneLocationEventSubscription: - subscriptionType: 'ZoneLocationEventSubscription' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' - zoneId: 'zone01' - locationEventCriteria: - - ENTERING_AREA_EVENT - expiryDeadline: - seconds: 1977836800 - nanoseconds: 0 - responses: - '201': - description: 'Indicates successful resource creation' - content: - application/json: - schema: - type: object - properties: - zoneLocationEventSubscription: - $ref: '#/components/schemas/ZoneLocationEventSubscription' - zoneStatusSubscription: - $ref: '#/components/schemas/ZoneStatusSubscription' - example: - - zoneLocationEventSubscription: - subscriptionType: 'ZoneLocationEventSubscription' - callbackReference: - notifyURL: 'http://my.callback.com/location_notifications/some-id' - zoneId: 'zone01' - locationEventCriteria: - - ENTERING_AREA_EVENT - expiryDeadline: - seconds: 1977836800 - nanoseconds: 0 - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '415': - $ref: '#/components/responses/415' - '422': - $ref: '#/components/responses/422' - '429': - $ref: '#/components/responses/429' - callbacks: - notification: - '{$request.body#/zoneLocationEventSubscription.callbackReference}': - post: - summary: 'Callback POST used to send a notification' - description: 'Notification from Location service, content based on subscription type' - operationId: zoneNotificationPOST - requestBody: - description: 'Subscription notification' - required: true - content: - application/json: - schema: - type: object - properties: - zoneLocationEventNotification: - $ref: '#/components/schemas/ZoneLocationEventNotification' - zoneStatusNotification: - $ref: '#/components/schemas/ZoneStatusNotification' - example: - - zoneLocationEventNotification: - notificationType: 'ZoneLocationEventNotification' - timestamp: - seconds: 1673507343 - nanoseconds: 0 - address: 'acr:10.0.0.1' - zoneId: 'zone01' - _links: - subscription: - href: "http://meAppServer.example.com/location/v3/subscriptions/zone/subscription123" - responses: - '204': - $ref: '#/components/responses/204' - x-swagger-router-controller: 'subscriptions' - - /subscriptions/zones/{subscriptionId}: - get: - tags: - - 'location' - summary: 'Retrieve zone subscription information' - description: 'The GET method is used to retrieve information about zone subscription. ' - operationId: zoneSubGET - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Upon success, a response body containing data type describing the specific zone subscription is returned.' - content: - application/json: - schema: - type: object - required: - - zoneLocationEventSubscription - - zoneStatusSubscription - properties: - zoneLocationEventSubscription: - $ref: '#/components/schemas/ZoneLocationEventSubscription' - zoneStatusSubscription: - $ref: '#/components/schemas/ZoneStatusSubscription' - example: - - zoneLocationEventSubscription: - subscriptionType: 'ZoneLocationEventSubscription' - callbackReference: 'http://my.callback.com/zone-notification/some-id' - zoneId: 'zone01' - locationEventCriteria: - - ENTERING_AREA_EVENT - expiryDeadline": - seconds: 1977836800 - nanoseconds": 0 - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - put: - tags: - - 'location' - summary: 'Updates a zone subscription information' - description: 'The PUT method is used to update the existing zone subscription.' - operationId: zoneSubPUT - requestBody: - description: 'Subscription to be modified' - required: true - content: - application/json: - schema: - type: object - properties: - zoneLocationEventSubscription: - $ref: '#/components/schemas/ZoneLocationEventSubscription' - zoneStatusSubscription: - $ref: '#/components/schemas/ZoneStatusSubscription' - example: - - zoneLocationEventSubscription: - subscriptionType: 'ZoneLocationEventSubscription' - callbackReference: 'http://my.callback.com/zone-notification/some-id' - zoneId: 'zone01' - locationEventCriteria: - - ENTERING_AREA_EVENT - expiryDeadline": - seconds: 1977836800 - nanoseconds": 0 - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Upon success, a response body containing data type describing the updated subscription is returned.' - content: - application/json: - schema: - type: object - properties: - zoneLocationEventSubscription: - $ref: '#/components/schemas/ZoneLocationEventSubscription' - zoneStatusSubscription: - $ref: '#/components/schemas/ZoneStatusSubscription' - example: - - zoneLocationEventSubscription: - subscriptionType: 'ZoneLocationEventSubscription' - callbackReference: 'http://my.callback.com/zone-notification/some-id' - zoneId: 'zone01' - locationEventCriteria: - - ENTERING_AREA_EVENT - expiryDeadline": - seconds: 1977836800 - nanoseconds": 0 - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '412': - $ref: '#/components/responses/412' - '422': - $ref: '#/components/responses/422' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - delete: - tags: - - 'location' - summary: 'Cancel a zone subscription' - description: 'The DELETE method is used to cancel the existing zone subscription.' - operationId: zoneSubDELETE - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '204': - $ref: '#/components/responses/204' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - - - - /subscriptions/zonalTraffic: - get: - tags: - - 'location' - summary: 'Retrieves all active subscriptions to zonal traffic notifications' - description: 'This operation is used for retrieving all active subscriptions to zonal traffic change notifications.' - operationId: zonalTrafficSubListGET - responses: - '200': - description: 'Response to retrieve zonal traffic subscriptions' - content: - application/json: - schema: - type: object - required: - - notificationSubscriptionList - properties: - notificationSubscriptionList: - $ref: '#/components/schemas/NotificationSubscriptionList' - post: - tags: - - 'location' - summary: 'Creates a subscription for zonal traffic notification' - description: 'Creates a subscription to the Location Service for zonal traffic change notification.' - operationId: zonalTrafficSubPOST - requestBody: - description: 'Subscription to be created' - required: true - content: - application/json: - schema: - type: object - properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' - example: - zonalTrafficSubscription: - clientCorrelator: "0123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" - zoneId: "zone01" - userEventCriteria: - - "Entering" - responses: - '201': - description: 'Successful subscription' - content: - application/json: - schema: - type: object - properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' - example: - zonalTrafficSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zonalTraffic/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" - zoneId: "zone01" - userEventCriteria: - - "Entering" - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - callbacks: - notification: - '{$request.body#/zonalTrafficSubscription.callbackReference.notifyURL}': - post: - summary: 'Callback POST used to send a notification' - description: 'Notification from Location service, content based on subscription type' - operationId: zonalTrafficNotificationPOST - requestBody: - description: 'Subscription notification' - required: true - content: - application/json: - schema: - type: object - properties: - zonalPresenceNotification: - $ref: '#/components/schemas/ZonalPresenceNotification' - responses: - '204': - $ref: '#/components/responses/204' - x-swagger-router-controller: 'subscriptions' - /subscriptions/zonalTraffic/{subscriptionId}: - get: - tags: - - 'location' - summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: zonalTrafficSubGET - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Subscription information regarding subscription notifications' - content: - application/json: - schema: - type: object - required: - - zonalTrafficSubscription - properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: "subscriptions" - put: - tags: - - 'location' - summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: zonalTrafficSubPUT - requestBody: - description: 'Subscription to be modified' - required: true - content: - application/json: - schema: - type: object - properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' - example: - zonalTrafficSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zonalTraffic/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" - zoneId: "zone01" - userEventCriteria: - - "Entering" - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '200': - description: 'Successful subscription to response to subscription notifications' - content: - application/json: - schema: - type: object - properties: - zonalTrafficSubscription: - $ref: '#/components/schemas/ZonalTrafficSubscription' - example: - zonalTrafficSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zonalTraffic/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-traffic/some-id" - zoneId: "zone01" - userEventCriteria: - - "Entering" - '400': - $ref: '#/components/responses/400' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '406': - $ref: '#/components/responses/406' - '412': - $ref: '#/components/responses/412' - '422': - $ref: '#/components/responses/422' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - delete: - tags: - - 'location' - summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: zonalTrafficSubDELETE - parameters: - - $ref: '#/components/parameters/Path.SubscrId' - responses: - '204': - $ref: '#/components/responses/204' - '401': - $ref: '#/components/responses/401' - '403': - $ref: '#/components/responses/403' - '404': - $ref: '#/components/responses/404' - '429': - $ref: '#/components/responses/429' - x-swagger-router-controller: 'subscriptions' - /subscriptions/zoneStatus: - get: - tags: - - 'location' - summary: 'Retrieves all active subscriptions to zone status notifications' - description: 'This operation is used for retrieving all active subscriptions to zone status change notifications.' - operationId: zoneStatusSubListGET - responses: - '200': - description: 'Response to retrieve zone status subscriptions' - content: - application/json: - schema: - type: object - required: - - notificationSubscriptionList - properties: - notificationSubscriptionList: - $ref: '#/components/schemas/NotificationSubscriptionList' + resourceURL: + href: 'http://meAppServer.example.com/location/v2/subscriptions/zones' post: tags: - - 'location' - summary: 'Creates a subscription for zone status notification' - description: 'Creates a subscription to the Location Service for zone status change notification.' - operationId: zoneStatusSubPOST + - 'location' + summary: 'Creates a subscription to zone notifications' + description: 'The POST method is used to create a new subscription to zone notifications.' + operationId: zoneSubPOST requestBody: - description: 'Subscription to be created' required: true content: application/json: schema: type: object properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' zoneStatusSubscription: $ref: '#/components/schemas/ZoneStatusSubscription' example: - zoneStatusSubscription: + zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-location-event-notification/some-id' + zoneId: 'zone01' clientCorrelator: "0123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-status/some-id" - zoneId: "zone01" - numberOfUsersZoneThreshold: 3 - operationStatus: ["Serviceable"] + addressList: + - 10.100.0.1 + - 10.10.0.1 + - 10.10.0.4 + - 10.100.0.2 + - 10.100.0.3 + requestTestNotification: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 + description: | + The entity body in the request contains data type of the specific UE + location event subscription that is to be created, where the data type + options are listed below and defined in clauses 6.3.6 and 6.3.7: + - ZoneLocationEventSubscription. + - ZoneStatusSubscription. responses: '201': - description: 'Successful subscription' + description: 'Indicates successful resource creation' content: application/json: schema: type: object properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' zoneStatusSubscription: $ref: '#/components/schemas/ZoneStatusSubscription' example: - zoneStatusSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zoneStatus/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-status/some-id" - zoneId: "zone01" - numberOfUsersZoneThreshold: 3 - operationStatus: ["Serviceable"] + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: + notifyURL: 'http://my.callback.com/location_notifications/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 '400': $ref: '#/components/responses/400' '401': @@ -2049,15 +1299,19 @@ paths: $ref: '#/components/responses/404' '406': $ref: '#/components/responses/406' + '415': + $ref: '#/components/responses/415' + '422': + $ref: '#/components/responses/422' '429': $ref: '#/components/responses/429' callbacks: notification: - '{$request.body#/zoneStatusSubscription.callbackReference.notifyURL}': + '{$request.body#/zoneLocationEventSubscription.callbackReference}': post: summary: 'Callback POST used to send a notification' description: 'Notification from Location service, content based on subscription type' - operationId: zoneStatusNotificationPOST + operationId: zoneNotificationPOST requestBody: description: 'Subscription notification' required: true @@ -2066,33 +1320,60 @@ paths: schema: type: object properties: + zoneLocationEventNotification: + $ref: '#/components/schemas/ZoneLocationEventNotification' zoneStatusNotification: $ref: '#/components/schemas/ZoneStatusNotification' + example: + - zoneLocationEventNotification: + notificationType: 'ZoneLocationEventNotification' + timestamp: + seconds: 1673507343 + nanoseconds: 0 + address: 'acr:10.0.0.1' + zoneId: 'zone01' + _links: + subscription: + href: "http://meAppServer.example.com/location/v3/subscriptions/zone/subscription123" responses: '204': $ref: '#/components/responses/204' x-swagger-router-controller: 'subscriptions' - /subscriptions/zoneStatus/{subscriptionId}: + + /subscriptions/zones/{subscriptionId}: get: tags: - - 'location' - summary: 'Retrieve subscription information' - description: 'Get subscription information.' - operationId: zoneStatusSubGET + - 'location' + summary: 'Retrieve zone subscription information' + description: 'The GET method is used to retrieve information about zone subscription. ' + operationId: zoneSubGET parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Subscription information regarding subscription notifications' + description: 'Upon success, a response body containing data type describing the specific zone subscription is returned.' content: application/json: schema: type: object required: + - zoneLocationEventSubscription - zoneStatusSubscription properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' zoneStatusSubscription: $ref: '#/components/schemas/ZoneStatusSubscription' + example: + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -2105,53 +1386,80 @@ paths: $ref: '#/components/responses/406' '429': $ref: '#/components/responses/429' - x-swagger-router-controller: "subscriptions" + x-swagger-router-controller: 'subscriptions' put: tags: - - 'location' - summary: 'Updates a subscription information' - description: 'Updates a subscription.' - operationId: zoneStatusSubPUT + - 'location' + summary: 'Updates a zone subscription information' + description: 'The PUT method is used to update the existing zone subscription.' + operationId: zoneSubPUT requestBody: - description: 'Subscription to be modified' required: true content: application/json: schema: type: object properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' zoneStatusSubscription: $ref: '#/components/schemas/ZoneStatusSubscription' example: - zoneStatusSubscription: + zoneLocationEventSubscription: + _links: + self: + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/users/subscription123" + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-location-event-notification/some-id' + zoneId: 'zone01' clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zoneStatus/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-status/some-id" - zoneId: "zone01" - numberOfUsersZoneThreshold: 3 - operationStatus: ["Serviceable"] + addressList: + - 10.100.0.1 + - 10.10.0.1 + - 10.10.0.4 + - 10.100.0.2 + - 10.100.0.3 + requestTestNotification: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 + description: | + The entity body in the request contains data type of the specific UE + location event subscription that is to be created, where the data type + options are listed below and defined in clauses 6.3.6 and 6.3.7: + - ZoneLocationEventSubscription. + - ZoneStatusSubscription. + parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: '200': - description: 'Successful subscription to response to subscription notifications' + description: 'Upon success, a response body containing data type describing the updated subscription is returned.' content: application/json: schema: type: object properties: + zoneLocationEventSubscription: + $ref: '#/components/schemas/ZoneLocationEventSubscription' zoneStatusSubscription: $ref: '#/components/schemas/ZoneStatusSubscription' - example: - zoneStatusSubscription: - clientCorrelator: "0123" - resourceURL: "http://[hostIP]/sbox-xyz123/location/v2/subscriptions/zoneStatus/subscription123" - callbackReference: - notifyURL: "http://my.callback.com/location-zonal-status/some-id" - zoneId: "zone01" - numberOfUsersZoneThreshold: 3 - operationStatus: ["Serviceable"] + example: + - zoneLocationEventSubscription: + subscriptionType: 'ZoneLocationEventSubscription' + callbackReference: 'http://my.callback.com/zone-notification/some-id' + zoneId: 'zone01' + locationEventCriteria: + - ENTERING_AREA_EVENT + expiryDeadline": + seconds: 1977836800 + nanoseconds": 0 '400': $ref: '#/components/responses/400' '401': @@ -2171,10 +1479,10 @@ paths: x-swagger-router-controller: 'subscriptions' delete: tags: - - 'location' - summary: 'Cancel a subscription' - description: 'Method to delete a subscription.' - operationId: zoneStatusSubDELETE + - 'location' + summary: 'Cancel a zone subscription' + description: 'The DELETE method is used to cancel the existing zone subscription.' + operationId: zoneSubDELETE parameters: - $ref: '#/components/parameters/Path.SubscrId' responses: @@ -2413,11 +1721,11 @@ components: x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: dateTimeStamp required: - - accessPointId - - connectionType - - operationStatus - - numberOfUsers - - resourceURL + - accessPointId + - connectionType + - operationStatus + - numberOfUsers + - resourceURL type: object AccessPointList: description: A type containing list of access points. @@ -2440,29 +1748,14 @@ components: x-etsi-mec-cardinality: 1 x-etsi-mec-origin-type: string required: - - zoneId - - resourceURL - type: object - CallbackReference: - properties: - callbackData: - description: Data the application can register with the server when subscribing to notifications, and that are passed back unchanged in each of the related notifications. These data can be used by the application in the processing of the notification, e.g. for correlation purposes. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - notificationFormat: - $ref: '#/components/schemas/NotificationFormat' - notifyURL: - description: Notify Callback URL - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: anyURI - required: - - notifyURL + - zoneId + - resourceURL type: object UserLocationPeriodicSubscription: properties: + _links: + $ref: '#/components/schemas/_links' address: description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI) to monitor." format: uri @@ -2515,8 +1808,8 @@ components: UserLocationPeriodicNotification: properties: - # _links: - # $ref: '#/components/schemas/_links' + _links: + $ref: '#/components/schemas/_links' accessPointId: description: "The identity of the access point that the user is currently within. \nSee note 2." type: string @@ -2571,7 +1864,7 @@ components: required: - notificationType - result - # - _links + - _links type: object x-etsi-notes: "NOTE 1:\tAs specified in [17], clause 6.1.6.2.14.\nNOTE 2:\tAs specified in [5], clause 5.2.2.7.\nNOTE 3:\tIf the result is SUCCESS, at least one of locationInfo, civicInfo and relativeLocationInfo shall be present." x-etsi-ref: 6.4.5 @@ -2635,8 +1928,8 @@ components: ZoneLocationEventSubscription: properties: - # _links: - # $ref: '#/components/schemas/_links' + _links: + $ref: '#/components/schemas/_links' addressList: description: List of the users to be monitored. If not present, all the users need to be monitored. items: @@ -2701,8 +1994,6 @@ components: x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." x-etsi-ref: 6.3.6 - - UserLocationEventSubscription: properties: address: @@ -2762,97 +2053,6 @@ components: x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." x-etsi-ref: 6.3.4 - CircleNotificationSubscription: - description: A type containing data for notifications, when the area is defined as a circle. - properties: - address: - description: Address of terminals to monitor (e.g. "sip" URI, "tel" URI, "acr" URI) - items: - type: string - type: array - x-etsi-mec-cardinality: 1..N - x-etsi-mec-origin-type: anyURI - callbackReference: - $ref: '#/components/schemas/CallbackReference' - checkImmediate: - description: Check location immediately after establishing notification. - type: boolean - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: boolean - clientCorrelator: - description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - count: - description: Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0. - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: int - duration: - description: "Period of time (in seconds) notifications are provided for. If set to \u201C0\u201D (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications." - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: int - enteringLeavingCriteria: - $ref: '#/components/schemas/EnteringLeavingCriteria' - frequency: - description: Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications). - type: integer - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: int - latitude: - description: Latitude of center point. - format: float - type: number - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: float - link: - description: Link to other resources that are in relationship with the resource. - items: - $ref: '#/components/schemas/Link' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: Link - longitude: - description: Longitude of center point. - format: float - type: number - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: float - radius: - description: Radius circle around center point in meters. - format: float - type: number - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: float - requester: - description: Identifies the entity that is requesting the information (e.g. "sip" URI, "tel" URI, "acr" URI) - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI - resourceURL: - description: Self referring URL - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI - trackingAccuracy: - description: Number of meters of acceptable error in tracking distance. - format: float - type: number - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: float - required: - - callbackReference - - address - - latitude - - longitude - - radius - - trackingAccuracy - - enteringLeavingCriteria - - checkImmediate - - frequency - type: object ConnectionType: description: The connection type for the access point enum: @@ -2992,136 +2192,31 @@ components: x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Boolean subscriptionType: - description: Shall be set to "UserDistanceSubscription". - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: String - trackingAccuracy: - description: Number of meters of acceptable error in tracking distance. - format: float - type: number - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: Float - websockNotifConfig: - description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. - x-etsi-mec-cardinality': 0..1 - x-etsi-mec-origin-type': WebsockNotifConfig - $ref: '#/components/schemas/WebsockNotifConfig' - required: - - subscriptionType - - monitoredAddress - - distance - - trackingAccuracy - - criteria - - checkImmediate - type: object - x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [6], clause 5.2.3.2." - x-etsi-ref: 6.3.9 - - - DistanceNotificationSubscription: - description: A type containing data for distance subscription, with reference to other devices. - properties: - callbackReference: - $ref: '#/components/schemas/CallbackReference' - checkImmediate: - description: Check location immediately after establishing notification. - type: boolean - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: boolean - clientCorrelator: - description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - count: - description: Maximum number of notifications per individual address. For no maximum, either do not include this element or specify a value of zero. Default value is 0. - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: int - criteria: - $ref: '#/components/schemas/DistanceCriteria' - distance: - description: Distance between devices that shall be monitored. - format: float - type: number - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: float - duration: - description: "Period of time (in seconds) notifications are provided for. If set to \u201C0\u201D (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications." - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: int - frequency: - description: Maximum frequency (in seconds) of notifications per subscription (can also be considered minimum time between notifications). - type: integer - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: int - link: - description: Link to other resources that are in relationship with the resource. - items: - $ref: '#/components/schemas/Link' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: Link - monitoredAddress: - description: Contains addresses of devices to monitor (e.g., 'sip' URI, 'tel' URI, 'acr' URI) - items: - type: string - type: array - x-etsi-mec-cardinality: 1..N - x-etsi-mec-origin-type: anyURI - referenceAddress: - description: Indicates address of each device that will be used as reference devices from which the distances towards monitored devices indicated in the Addresses will be monitored (e.g., 'sip' URI, 'tel' URI, 'acr' URI) - items: - type: string - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: anyURI - requester: - description: Identifies the entity that is requesting the information (e.g. "sip" URI, "tel" URI, "acr" URI) - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI - resourceURL: - description: Self referring URL + description: Shall be set to "UserDistanceSubscription". type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String trackingAccuracy: description: Number of meters of acceptable error in tracking distance. format: float type: number - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: float + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Float + websockNotifConfig: + description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': WebsockNotifConfig + $ref: '#/components/schemas/WebsockNotifConfig' required: - - callbackReference + - subscriptionType - monitoredAddress - distance - trackingAccuracy - criteria - checkImmediate - - frequency - type: object - EnteringLeavingCriteria: - enum: - - Entering - - Leaving - type: string - Link: - description: Link to other resources - properties: - href: - description: URI - format: anyURI - type: string - rel: - description: Describes the relationship between the URI and the resource. - type: string - required: - - rel - - href type: object + x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [6], clause 5.2.3.2." + x-etsi-ref: 6.3.9 CivicAddress: description: Indicates a Civic address type: object @@ -3410,23 +2505,19 @@ components: x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: UnsignedInt required: - - velocityType - - bearing - - horizontalSpeed + - velocityType + - bearing + - horizontalSpeed type: object x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Structure (inlined) required: - - latitude - - longitude - - shape + - latitude + - longitude + - shape type: object x-etsi-ref: 6.5.3 - NotificationFormat: - enum: - - XML - - JSON - type: string + Point: properties: latitude: @@ -3513,7 +2604,7 @@ components: x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' userLocationEvent: - description: The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT", "LEAVING_AREA_EVENT". + description': The specific event triggering this notification, e.g. "ENTERING_AREA_EVENT", "LEAVING_AREA_EVENT". x-etsi-mec-cardinality': '1' x-etsi-mec-origin-type': LocationEventType $ref: '#/components/schemas/LocationEventType' @@ -3539,7 +2630,7 @@ components: x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: Array(Uri) areaDefine: - description: The parameters describing the area to subscribe. + description': The parameters describing the area to subscribe. x-etsi-mec-cardinality': '1' x-etsi-mec-origin-type': AreaInfo $ref: '#/components/schemas/AreaInfo' @@ -3555,7 +2646,7 @@ components: x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String expiryDeadline: - description: The expiration time of the subscription determined by the UE Area Subscribe Service. + description': The expiration time of the subscription determined by the UE Area Subscribe Service. x-etsi-mec-cardinality': 0..1 x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' @@ -3568,7 +2659,7 @@ components: x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: Array(LocationEventType) reportingCtrl: - description: Provides parameters that ctrl the reporting. + description': Provides parameters that ctrl the reporting. x-etsi-mec-cardinality': 0..1 x-etsi-mec-origin-type': ReportingCtrl $ref: '#/components/schemas/ReportingCtrl' @@ -3594,7 +2685,7 @@ components: x-etsi-mec-cardinality: '1' x-etsi-mec-origin-type: Float websockNotifConfig: - description: Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. + description': Provides details to negotiate and signal the use of a Websocket connection between the location server and the service consumer for notifications. See note 1. x-etsi-mec-cardinality': 0..1 x-etsi-mec-origin-type': WebsockNotifConfig $ref: '#/components/schemas/WebsockNotifConfig' @@ -3607,134 +2698,46 @@ components: x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it." x-etsi-ref: 6.3.8 - - NotificationSubscriptionList: + description: This type contains a list of subscriptions. properties: - zoneStatusSubscription: - items: - $ref: '#/components/schemas/ZoneStatusSubscription' - ZoneLocationEventSubscription: - items: - $ref: '#/components/schemas/ZoneLocationEventSubscription' - userLocationEventSubscription: - items: - $ref: '#/components/schemas/UserLocationEventSubscription' - UserLocationPeriodicSubscription: - items: - $ref: '#/components/schemas/UserLocationPeriodicSubscription' - circleNotificationSubscription: - description: Collection of CircleNotificationSubscription elements, see note 2. - items: - $ref: '#/components/schemas/CircleNotificationSubscription' - minItems: 0 - type: array - x-etsi-mec-cardinality: 0.. N - x-etsi-mec-origin-type: CircleNotificationSubscription - distanceNotificationSubscription: - description: Collection of DistanceNotificationSubscription elements, see note 2. - items: - $ref: '#/components/schemas/DistanceNotificationSubscription' - minItems: 0 - type: array - x-etsi-mec-cardinality: 0.. N - x-etsi-mec-origin-type: DistanceNotificationSubscription - periodicNotificationSubscription: - description: Collection of PeriodicNotificationSubscription elements, see note 2. - items: - $ref: '#/components/schemas/PeriodicNotificationSubscription' - minItems: 0 - type: array - x-etsi-mec-cardinality: 0.. N - x-etsi-mec-origin-type: PeriodicNotificationSubscription resourceURL: - description: Self-referring URL, see note 1. - format: uri - type: string - x-etsi-mec-cardinality: '1' - x-etsi-mec-origin-type: AnyURI - userTrackingSubscription: - description: Collection of UserTrackingSubscription elements, see note 1. - items: - $ref: '#/components/schemas/UserTrackingSubscription' - minItems: 0 - type: array - x-etsi-mec-cardinality: 0.. N - x-etsi-mec-origin-type: UserTrackingSubscription - zonalTrafficSubscription: - description: Collection of ZonalTrafficSubscription elements, see note 1. + $ref: '#/components/schemas/LinkType' + subscription: items: - $ref: '#/components/schemas/ZonalTrafficSubscription' - minItems: 0 + $ref: '#/components/schemas/Subscription' type: array - x-etsi-mec-cardinality: 0.. N - x-etsi-mec-origin-type: ZonalTrafficSubscription required: - resourceURL type: object - x-etsi-notes: "NOTE 1:\tAs specified in [5], clause 5.2.2.8.\nNOTE 2: \tAs specified in [6], clause 5.2.2.7." x-etsi-ref: 6.3.3 + Subscription: + description: '' + minItems: 0 + properties: + href: + description: The URI referring to the subscription. + format: uri + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: Uri + subscriptionType: + description: "Type of the subscription. The string shall be set according to the \"subscriptionType\" attribute of the associated subscription data type defined in clauses\_6.3.4, 6.3.5, 6.3.6, 6.3.7 6.3.8 and 6.3.9:\n\"UserLocationEventSubscription\"\n\"UserLocationPeriodicSubscription\"\n\"ZoneLocationEventSubscription\"\n\"ZoneStatusSubscription\"\n\"UserAreaSubscription\"\n\"UserDistanceSubscription\"" + type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String + required: + - href + - subscriptionType + type: object + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Structure (inlined) OperationStatus: enum: - Serviceable - Unserviceable - Unknown type: string - PeriodicNotificationSubscription: - description: A type containing data for periodic subscription. - properties: - address: - description: Address of terminals to monitor (e.g. "sip" URI, "tel" URI, "acr" URI) - items: - type: string - type: array - x-etsi-mec-cardinality: 1..N - x-etsi-mec-origin-type: anyURI - callbackReference: - $ref: '#/components/schemas/CallbackReference' - clientCorrelator: - description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - duration: - description: "Period of time (in seconds) notifications are provided for. If set to \u201C0\u201D (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications." - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: int - frequency: - description: Maximum frequency (in seconds) of notifications (can also be considered minimum time between notifications) per subscription. - type: integer - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: int - link: - description: Link to other resources that are in relationship with the resource. - items: - $ref: '#/components/schemas/Link' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: Link - requestedAccuracy: - description: Accuracy of the provided distance in meters. - type: integer - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: int - requester: - description: Identifies the entity that is requesting the information (e.g. "sip" URI, "tel" URI, "acr" URI) - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI - resourceURL: - description: Self referring URL - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI - required: - - callbackReference - - address - - requestedAccuracy - - frequency - type: object ProblemDetails: properties: detail: @@ -3799,40 +2802,7 @@ components: - messageId - text type: object - SubscriptionNotification: - description: A type containing the notification subscription. - properties: - callbackData: - description: CallbackData if passed by the application in the receiptRequest element during the associated subscription operation - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - distanceCriteria: - $ref: '#/components/schemas/DistanceCriteria' - enteringLeavingCriteria: - $ref: '#/components/schemas/EnteringLeavingCriteria' - isFinalNotification: - description: Set to true if it is a final notification about location change. - type: boolean - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: boolean - link: - description: Link to other resources that are in relationship with the resource. - items: - $ref: '#/components/schemas/Link' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: Link - terminalLocation: - description: Collection of the terminal locations. - items: - $ref: '#/components/schemas/TerminalLocation' - type: array - x-etsi-mec-cardinality: 1..N - x-etsi-mec-origin-type: TerminalLocation - required: - - terminalLocation - type: object + TerminalDistance: description: A type containing information about the distance from a terminal to a location or between two terminals, in addition the accuracy and a timestamp of the information are provided. properties: @@ -4074,12 +3044,6 @@ components: - nanoSeconds type: object x-etsi-ref: 6.5.2 - UserEventType: - enum: - - Entering - - Leaving - - Transferring - type: string UserInfo: properties: accessPointId: @@ -4146,131 +3110,6 @@ components: required: - resourceURL type: object - UserTrackingSubscription: - description: A type containing user tracking subscription. - properties: - address: - description: Address of user (e.g. "sip" URI, "tel" URI, "acr" URI) to monitor - type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: anyURI - callbackReference: - $ref: '#/components/schemas/CallbackReference' - clientCorrelator: - description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - resourceURL: - description: Self referring URL - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI - userEventCriteria: - description: List of user event values to generate notifications for (these apply to address specified). If this element is missing, a notification is requested to be generated for any change in user event. - items: - $ref: '#/components/schemas/UserEventType' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: UserEventType - required: - - callbackReference - - address - type: object - ZonalPresenceNotification: - description: A type containing zonal presence notification - properties: - address: - description: Address of user (e.g. "sip" URI, "tel" URI, "acr" URI) to monitor - type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: anyURI - callbackData: - description: CallBackData if passed by the application during the associated ZonalTrafficSubscription and UserTrackingSubscription operation. See [REST_NetAPI_Common]. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - currentAccessPointId: - description: Identifier of access point. - type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string - interestRealm: - description: Interest realm of access point (e.g. geographical area, a type of industry etc.). - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - link: - description: Link to other resources that are in relationship with this notification. The server SHOULD include a link to the related subscription. No other links are required or suggested by this specification - items: - $ref: '#/components/schemas/Link' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: Link - previousAccessPointId: - description: Identifier of access point. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - timestamp: - $ref: '#/components/schemas/TimeStamp' - userEventType: - $ref: '#/components/schemas/UserEventType' - zoneId: - description: Identifier of zone - type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string - required: - - zoneId - - address - - userEventType - - currentAccessPointId - - timestamp - type: object - ZonalTrafficSubscription: - description: A type containing zonal traffic subscription - properties: - callbackReference: - $ref: '#/components/schemas/CallbackReference' - clientCorrelator: - description: A correlator that the client can use to tag this particular resource representation during a request to create a resource on the server. - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - duration: - description: Period (in seconds) of time notifications are provided for. If set to "0" (zero), a default duration time, which is specified by the service policy, will be used. If the parameter is omitted, the notifications will continue until the maximum duration time, which is specified by the service policy, unless the notifications are stopped by deletion of subscription for notifications. This element MAY be given by the client during resource creation in order to signal the desired lifetime of the subscription. The server MUST return in this element the period of time for which the subscription will still be valid. - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: unsignedInt - interestRealm: - description: Interest realm of access point (e.g. geographical area, a type of industry etc.). - items: - type: string - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: string - resourceURL: - description: Self referring URL - type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: anyURI - userEventCriteria: - description: List of user event values to generate notifications for (these apply to zone identifier or all interest realms within zone identifier specified). If this element is missing, a notification is requested to be generated for any change in user event. - items: - $ref: '#/components/schemas/UserEventType' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: UserEventType - zoneId: - description: Identifier of zone - type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string - required: - - callbackReference - - zoneId - type: object ZoneInfo: description: A type containing zone information. properties: @@ -4324,8 +3163,8 @@ components: type: object ZoneLocationEventNotification: properties: - # _links: - # $ref: '#/components/schemas/_links' + _links: + $ref: '#/components/schemas/_links' address: description: "Address of user (e.g. \u2018sip\u2019 URI, \u2018tel\u2019 URI, \u2018acr\u2019 URI)." format: uri @@ -4362,52 +3201,60 @@ components: x-etsi-ref: 6.4.6 ZoneStatusNotification: - description: A type containing zone status notification. properties: + _links: + $ref: '#/components/schemas/_links' accessPointId: - description: Identifier of an access point. + description: Identifier of an access point (e.g. ap01). Shall be included when userNumEvent related with access point or operationStatus is included. type: string x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - callbackData: - description: CallBackData if passed by the application during the associated ZoneStatusSubscription operation. See [REST_NetAPI_Common]. + x-etsi-mec-origin-type: String + notificationType: + description: Shall be set to "ZoneStatusNotification". type: string - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: string - link: - description: Link to other resources that are in relationship with this notification. The server SHOULD include a link to the related subscription. No other links are required or suggested by this specification - items: - $ref: '#/components/schemas/Link' - type: array - x-etsi-mec-cardinality: 0..N - x-etsi-mec-origin-type: Link - numberOfUsersInAP: - description: This element shall be present when ZoneStatusSubscription includes numberOfUsersAPThreshold element and the number of users in an access point exceeds the threshold defined in the subscription. - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: unsignedInt - numberOfUsersInZone: - description: This element shall be present when ZoneStatusSubscription includes numberOfUsersZoneThreshold element and the number of users in a zone exceeds the threshold defined in this subscription. - type: integer - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: unsignedInt + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String operationStatus: + description': Shall be present when ZoneStatusSubscription includes operationStatus and the operation status value of an access point meets Serviceable or Unserviceable or Unknown defined in the subscription. See note 1. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': OperationStatus $ref: '#/components/schemas/OperationStatus' - timestamp: + timeStamp: + description': Time stamp. + x-etsi-mec-cardinality': 0..1 + x-etsi-mec-origin-type': TimeStamp $ref: '#/components/schemas/TimeStamp' + userNumEvent: + description: 'Shall be present when ZoneStatusSubscription includes upperNumberOfUsersZoneThreshold, lowerNumberOfUsersZoneThreshold, upperNumberOfUsersAPThreshold or lowerNumberOfUsersAPThreshold, and the number of users in a zone or an access point crosses the threshold defined in the subscription: + 1 = OVER_ZONE_UPPER_THD. + 2 = UNDER_ZONE_LOWER_THD. + 3 = OVER_AP_UPPER_THD. + 4 = UNDER_AP_LOWER_THD.' + enum: + - 1 + - 2 + - 3 + - 4 + type: integer + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Enum(inlined) zoneId: - description: Identifier of zone + description: 'The identity of the zone. ' type: string - x-etsi-mec-cardinality: 1 - x-etsi-mec-origin-type: string + x-etsi-mec-cardinality: '1' + x-etsi-mec-origin-type: String required: + - notificationType - zoneId - - timestamp + - _links type: object + x-etsi-notes: "NOTE:\tAs specified in [5], clause 5.2.3.2." + x-etsi-ref: 6.4.7 + ZoneStatusSubscription: properties: - # _links: - # $ref: '#/components/schemas/_links' + _links: + $ref: '#/components/schemas/_links' callbackReference: description: URI exposed by the client on which to receive notifications via HTTP. See note 1. format: uri @@ -4482,4 +3329,4 @@ components: - zoneId type: object x-etsi-notes: "NOTE 1:\tAt least one of callbackReference and websockNotifConfig shall be provided by the service consumer. If both are provided, it is up to location server to select an alternative and return only that alternative in the response, as specified in ETSI GS MEC 009 [4], clause 6.12a.\nNOTE 2:\tThis allows the client to recover from communication failures during resource creation and therefore avoids duplicate subscription creation in such situations. In case the element is present, the server shall not alter its value, and shall provide it as part of the representation of this resource. In case the element is not present, the server shall not generate it.\nNOTE 3:\tAs specified in [5], clause 5.2.3.2." - x-etsi-ref: 6.3.7 \ No newline at end of file + x-etsi-ref: 6.3.7 -- GitLab From 4ea9310b3ad78011c91d5254d79c92d06b3127b9 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Fri, 7 Jun 2024 12:49:13 +0000 Subject: [PATCH 15/58] update github configurations according to the device OAuth flow --- config/.meepctl-repocfg.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 895a77c..e48a372 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -69,7 +69,9 @@ repo: # enable GitHub OAuth enabled: true # authorization url - auth-url: https://github.com/login/oauth/authorize + auth-url: https://github.com/login/device/code + # polling url + poll-url: https://github.com/login/oauth/access_token # access token url token-url: https://github.com/login/oauth/access_token # OAuth redirect URI -- GitLab From 31a331a4732cf361d2f9321307aa79534229f4a8 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Tue, 25 Jun 2024 11:27:27 +0000 Subject: [PATCH 16/58] Fix SubscriptionType value in all request bodies --- config/api/loc-serv-api.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/api/loc-serv-api.yaml b/config/api/loc-serv-api.yaml index a09a3c3..3f4914a 100644 --- a/config/api/loc-serv-api.yaml +++ b/config/api/loc-serv-api.yaml @@ -410,7 +410,7 @@ paths: $ref: '#/components/schemas/UserAreaSubscription' example: userAreaSubscription: - subscriptionType: 'userAreaSubscription' + subscriptionType: 'UserAreaSubscription' clientCorrelator: '0123' callbackReference: 'http://my.callback.com/area_notification/some-id' requestTestNotification: true @@ -461,7 +461,7 @@ paths: $ref: '#/components/schemas/UserAreaSubscription' example: userAreaSubscription: - subscriptionType: 'userAreaSubscription' + subscriptionType: 'UserAreaSubscription' clientCorrelator: '0123' callbackReference: 'http://my.callback.com/user_area_notification/some-id' _links: @@ -500,7 +500,7 @@ paths: $ref: '#/components/schemas/UserAreaSubscription' example: userAreaSubscription: - subscriptionType: 'userAreaSubscription' + subscriptionType: 'UserAreaSubscription' clientCorrelator: '0123' callbackReference: 'http://my.callback.com/area_notification/some-id' _links: @@ -1113,7 +1113,7 @@ paths: expiryDeadline: seconds: 1973507343 nanoSeconds: 0 - subscriptionType: "userLocationEventSubscription" + subscriptionType: "UserLocationEventSubscription" description: | The entity body in the request contains the data type of the specific UE location event subscription that is to be created. The available data types are: - UserLocationEventSubscription -- GitLab From 24b4d1e6628d51fb940522d1dfb3b53aa84b655a Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 3 Jul 2024 13:53:19 +0200 Subject: [PATCH 17/58] Bug fixed in URL --- config/api/vis-api.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/api/vis-api.yaml b/config/api/vis-api.yaml index ee20599..0c4544b 100644 --- a/config/api/vis-api.yaml +++ b/config/api/vis-api.yaml @@ -12,7 +12,7 @@ info: version: 3.2.2 externalDocs: description: "ETSI GS MEC 030 V2X Information Services API, v3.1.1" - url: https://www.https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.02.01_60/ + url: .https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.02.01_60/ servers: - url: https://localhost/sandboxname/vis/v2 tags: -- GitLab From cb6aa22f40c51d972f41e080910b9f1c1a521146 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 4 Jul 2024 19:50:09 +0200 Subject: [PATCH 18/58] Bug fixed in MEC standard URL --- config/api/vis-api.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/api/vis-api.yaml b/config/api/vis-api.yaml index 0c4544b..c7d5edc 100644 --- a/config/api/vis-api.yaml +++ b/config/api/vis-api.yaml @@ -12,7 +12,7 @@ info: version: 3.2.2 externalDocs: description: "ETSI GS MEC 030 V2X Information Services API, v3.1.1" - url: .https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.02.01_60/ + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.02.01_60/ servers: - url: https://localhost/sandboxname/vis/v2 tags: -- GitLab From eeccc36d29631d90dbfc19a7714134b20ddc9c42 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 8 Jul 2024 13:26:14 +0200 Subject: [PATCH 19/58] Minor bug foxed in config/api/app-support.yaml --- config/api/app-support.yaml | 9 +-------- config/api/service-mgmt.yaml | 1 - 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/config/api/app-support.yaml b/config/api/app-support.yaml index 5f57139..5ec671f 100644 --- a/config/api/app-support.yaml +++ b/config/api/app-support.yaml @@ -17,20 +17,13 @@ info: email: AdvantEDGE@InterDigital.com externalDocs: description: 'ETSI GS MEC011 Application Enablement API, V3.1.1' - url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf servers: - - url: 'http://localhost/sandboxname/mec_app_support/v2' - variables: {} - url: 'https://localhost/sandboxname/mec_app_support/v2' - variables: {} tags: - name: mec_app_support - name: unsupported - name: callbacks -servers: - - url: 'https://localhost/sandboxname/mec_app_support/v2' - variables: {} paths: /applications/{appInstanceId}/traffic_rules: get: diff --git a/config/api/service-mgmt.yaml b/config/api/service-mgmt.yaml index d6be982..b313a37 100644 --- a/config/api/service-mgmt.yaml +++ b/config/api/service-mgmt.yaml @@ -13,7 +13,6 @@ externalDocs: description: "ETSI GS MEC011 Application Enablement API, V3.1.1" url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf servers: -- url: http://localhost/sandboxname/mec_service_mgmt/v1 - url: https://localhost/sandboxname/mec_service_mgmt/v1 tags: - name: appSubscriptions -- GitLab From 7856c457c8d9e593f930c1d804d541b6dac7eea6 Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 10 Jul 2024 09:08:36 +0200 Subject: [PATCH 20/58] Update copyright for .meepctl-repocfg.yaml --- config/.meepctl-repocfg.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index e48a372..8bde14e 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2022 The AdvantEDGE Authors +# Copyright (c) 2024 The AdvantEDGE Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. -- GitLab From d00dd9632af2f72e2658a9410a315838f2e483b1 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Thu, 11 Jul 2024 08:58:37 +0000 Subject: [PATCH 21/58] Fix minor issue in Request bdy of UserAreaSubscription --- config/api/loc-serv-api.yaml | 44 +++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/config/api/loc-serv-api.yaml b/config/api/loc-serv-api.yaml index 3f4914a..c4a3add 100644 --- a/config/api/loc-serv-api.yaml +++ b/config/api/loc-serv-api.yaml @@ -461,24 +461,32 @@ paths: $ref: '#/components/schemas/UserAreaSubscription' example: userAreaSubscription: - subscriptionType: 'UserAreaSubscription' - clientCorrelator: '0123' - callbackReference: 'http://my.callback.com/user_area_notification/some-id' - _links: - self: - href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/area/subscription123" - areaDefine: - shape: 1 - points: - - latitude: 43.748993 - longitude: 7.437573 - radius: 200 - addressList: - - 10.100.0.4 - trackingAccuracy: 10 - expiryDeadline: - seconds: 1973507343 - nanoSeconds: 0 + subscriptionType: 'UserAreaSubscription' + clientCorrelator: '0123' + requestTestNotification : true + callbackReference: 'http://my.callback.com/user_area_notification/some-id' + _links: + self: + href: http://[hostIP]/sbox-xyz123/location/v3/subscriptions/distance/subscription123" + areaDefine: + shape: 1 + points: + - latitude: 43.748993 + longitude: 7.437573 + radius: 200 + addressList: + - 10.100.0.4 + locationEventCriteria: + - ENTERING_AREA_EVENT + trackingAccuracy: 10 + reportingLocationReq: true + reportingCtrl: + maximumCount: 150 + maximumFrequency: 0 + minimumInterval: 5 + expiryDeadline: + seconds: 1977836800 + nanoseconds: 0 description: | The entity body in the request contains data type of the specific UE -- GitLab From 7bf02587176483ec2fcad642c438e83e6ec9e357 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Fri, 12 Jul 2024 09:43:04 +0000 Subject: [PATCH 22/58] small fix error in the swagger file of MEC011 app-support API --- config/api/app-support.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/api/app-support.yaml b/config/api/app-support.yaml index 5ec671f..fb7bb25 100644 --- a/config/api/app-support.yaml +++ b/config/api/app-support.yaml @@ -2250,7 +2250,7 @@ components: 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. minItems: 0 - type: array + type: string serCategory: $ref: '#/components/schemas/CategoryRef' serName: -- GitLab From 0ade99b751ddc75a5262671df2d8248cfa470400 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 25 Jul 2024 15:16:13 +0200 Subject: [PATCH 23/58] Push code before to move to Lab ETSI --- config/api/fed-api.yaml | 1454 +++++++++++++++++ config/permissions.yaml | 27 + .../dialogs/detailed-data-dialog.js | 25 +- .../src/js/containers/app-container.js | 2 +- .../src/js/containers/sandbox/api-table.js | 2 +- .../frontend/src/js/util/scenario-utils.js | 53 +- 6 files changed, 1549 insertions(+), 14 deletions(-) create mode 100644 config/api/fed-api.yaml diff --git a/config/api/fed-api.yaml b/config/api/fed-api.yaml new file mode 100644 index 0000000..8e83b33 --- /dev/null +++ b/config/api/fed-api.yaml @@ -0,0 +1,1454 @@ +openapi: 3.0.0 +info: + title: ETSI GS MEC 040 - MEC Federation enablement APIs + description: The ETSI MEC ISG MEC040 Federation enablement API described using OpenAPI + contact: + url: https://forge.etsi.org/rep/mec/gs040-fed-enablement-api + license: + name: BSD-3-Clause + url: https://forge.etsi.org/legal-matters + version: 3.2.1 +externalDocs: + description: "ETSI GS MEC 040 Federation enablement API, v3.2.1" + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/040/03.02.01_60/gs_MEC040v030201p.pdf +servers: +- url: https://localhost/sandboxname/sandboxname/fed_enablement/v1 +tags: +- name: systemInfo +- name: subscription +- name: fedServiceInfo +paths: + /fed_resources/systems: + get: + tags: + - systemInfo + summary: Retrieve a list of systems resources (see clause 6 for data model) + of federation members. + description: "The GET method retrieves the information of a list of systems\ + \ resources of federation members. This method is typically used in the sequence\ + \ of \"MEC system discovery\" as described in clause 5.2.2.2. The method shall\ + \ comply with the URI query parameters, request and response data structures,\ + \ and response codes, as specified in Tables 7.3.3.1-1 and 7.3.3.1-2." + operationId: systeminfoGET + parameters: + - name: systemId + in: query + description: Identifier of the MEC system. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + x-exportParamName: Query.systemId + - name: systemName + in: query + description: The name of the MEC system. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + x-exportParamName: Query.systemName + - name: systemProvider + in: query + description: Provider of the MEC system. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + x-exportParamName: Query.systemProvider + responses: + "200": + description: It is used to indicate that the query for retrieving systems + resource(s) is successful. Response body containing one or multiple systems + resources shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/SystemInfo' + x-content-type: application/json + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + post: + tags: + - systemInfo + summary: Create new systems resource for a given MEC system. + description: "The POST method creates the information of systems resources to\ + \ the MEC federator. This method is typically used in the sequence of \"Registration\ + \ of MEC system to the federation\" as described in clause 5.2.2.1. The method\ + \ shall comply with the URI query parameters, request and response data structures,\ + \ and response codes, as specified in Tables\_7.3.3.4-1 and 7.3.3.4-2." + operationId: systeminfoPOST + requestBody: + description: Entity body in the request contains SystemInfo to be created. + The attribute "systemId" shall be absent. + content: + application/json: + schema: + $ref: '#/components/schemas/fed_resources_systems_body' + required: true + responses: + "201": + description: |- + It is used to indicate that the systems resource is successfully created. + + The HTTP response includes a "Location" HTTP header that contains the URI of the created resource. + content: + application/json: + schema: + $ref: '#/components/schemas/fed_resources_systems_body' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /fed_resources/systems/{systemId}: + get: + tags: + - systemInfo + summary: Retrieve the systems resource of the federation member with systemId + as its system identifier. + description: "The GET method retrieves the systems resource information. This\ + \ method is typically used in the sequence of \"MEC system discovery\" as\ + \ described in clause 5.2.2.2. The method shall comply with the URI query\ + \ parameters, request and response data structures, and response codes, as\ + \ specified in Tables 7.4.3.1-1 and 7.4.3.1-2." + operationId: systeminfoByIdGET + parameters: + - name: systemId + in: path + description: Identifier of the MEC system. + required: true + style: simple + explode: false + schema: + type: string + x-exportParamName: Path.systemId + responses: + "200": + description: It is used to indicate that the query for retrieving systems + resource is successful. Response body containing one systems resource + shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/fed_resources_systems_body' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + delete: + tags: + - systemInfo + summary: Delete the systems resource for a given MEC system. + description: "The DELETE method deletes the information of systems resources\ + \ stored in the MEF. This method is typically used in the sequence of \"Deregistration\ + \ of MEC system to the federation\" as described in clause 5.2.2.1.1. The\ + \ method shall comply with the URI query parameters, request and response\ + \ data structures, and response codes, as specified in Tables 7.4.3.5-1 and\ + \ 7.4.3.5-2." + operationId: systeminfoByIdDELETE + parameters: + - name: systemId + in: path + description: Identifier of the MEC system. + required: true + style: simple + explode: false + schema: + type: string + x-exportParamName: Path.systemId + responses: + "204": + description: No Content + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + patch: + tags: + - systemInfo + summary: Update the systems resource for a given MEC system. + description: "The PATCH method updates the information of systems resources\ + \ stored in the MEC federator through previous registration. This method is\ + \ typically used in the sequence of \"Update of MEC system to the federation\"\ + \ as described in clause 5.2.2.2. The method shall comply with the URI query\ + \ parameters, request and response data structures, and response codes, as\ + \ specified in Tables 7.4.3.3-1 and 7.4.3.3-2." + operationId: systeminfoByIdPATCH + parameters: + - name: systemId + in: path + description: Identifier of the MEC system. + required: true + style: simple + explode: false + schema: + type: string + x-exportParamName: Path.systemId + requestBody: + description: It contains attributes to be update. + content: + application/json: + schema: + $ref: '#/components/schemas/systems_systemId_body' + required: true + responses: + "200": + description: It is used to indicate that the systems resource is successfully + updated. + content: + application/json: + schema: + $ref: '#/components/schemas/fed_resources_systems_body' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /subscriptions: + get: + tags: + - subscription + summary: Retrieve information on subscriptions for notifications + description: Queries information on subscriptions for notifications + operationId: subscriptionsGET + parameters: + - name: subscriptionType + in: query + description: Query parameter is used to filter a specific subscription type + required: false + style: form + explode: true + schema: + type: string + - name: systemId + in: query + description: Identifier of the MEC system + required: false + style: form + explode: true + schema: + type: string + responses: + "200": + description: Response body contains the list of links to requestor's subscriptions + is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionLinkList' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + post: + tags: + - subscription + summary: Create a new subscription + description: Creates a new subscription to to MEF + operationId: subscriptionPOST + requestBody: + description: Subscription to be created + content: + application/json: + schema: + $ref: '#/components/schemas/SystemUpdateNotificationSubscription' + required: true + responses: + "201": + description: Successful subscription response + content: + application/json: + schema: + $ref: '#/components/schemas/SystemUpdateNotificationSubscription' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /subscriptions/{subscriptionId}: + get: + tags: + - subscription + summary: Retrieve information on current specific subscription + description: "Queries information about an existing subscription, identified\ + \ by its self-referring URI returned on creation\"" + operationId: subscriptionGET + parameters: + - name: subscriptionId + in: path + description: "Subscription Id, specifically the \\\"self\\\" returned in the\ + \ subscription request" + required: true + style: simple + explode: false + schema: + type: string + format: uri + responses: + "200": + description: Subscription information regarding subscription notifications + content: + application/json: + schema: + $ref: '#/components/schemas/SystemUpdateNotificationSubscription' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + put: + tags: + - subscription + summary: Modify an existing subscription + description: "Updates an existing subscription, identified by its self-referring\ + \ URI returned on creation" + operationId: subscriptionPUT + parameters: + - name: subscriptionId + in: path + description: "Subscription Id, specifically the \\\"self\\\" returned in the\ + \ subscription request\"" + required: true + style: simple + explode: false + schema: + type: string + format: uri + requestBody: + description: Subscription to be modified + content: + application/json: + schema: + $ref: '#/components/schemas/SystemUpdateNotificationSubscription' + required: true + responses: + "200": + description: Successful subscription modification + content: + application/json: + schema: + $ref: '#/components/schemas/SystemUpdateNotificationSubscription' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + delete: + tags: + - subscription + summary: Cancel an existing subscription + description: "Cancels an existing subscription, identified by its self-referring\ + \ URI returned on creation (initial POST)" + operationId: subscriptionDELETE + parameters: + - name: subscriptionId + in: path + description: "Subscription Id, specifically the \\\"self\\\" returned in the\ + \ subscription request\"" + required: true + style: simple + explode: false + schema: + type: string + format: uri + responses: + "204": + description: No Content + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /fed_resources/systems/{systemId}/services: + get: + tags: + - fedServiceInfo + summary: Retrieves the information of all MEC services hosted by the MEC system + description: Retrieves the information of all MEC services hosted by the MEC + system associated with the systemId + operationId: servicesGET + parameters: + - name: seInstancerId + in: query + description: Indicator of a MEC service offered for MEC federation. + required: false + style: form + explode: true + schema: + type: string + x-exportParamName: Query.seInstancerId + - name: serName + in: query + description: The name of the service. + required: false + style: form + explode: true + schema: + type: string + x-exportParamName: Query.serName + - name: serCategory + in: query + description: A Category reference. + required: false + style: form + explode: true + schema: + type: string + x-exportParamName: Query.serCategory + responses: + "200": + description: It is used to indicate that the query for retrieving systems + resource(s) is successful. Response body containing one or multiple systems + resources shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FedServiceInfo' + x-content-type: application/json + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /fed_resources/systems/{systemId}/services/{serviceId}: + get: + tags: + - fedServiceInfo + summary: Retrieves the information of a specific MEC service hosted by the MEC + system associated with the systemId and serviceId + description: Retrieves the information of a specific MEC service hosted by the + MEC system associated with the systemId and serviceId + operationId: serviceGET + parameters: + - name: systemId + in: path + description: MEC system identifier + required: true + style: simple + explode: false + schema: + type: string + format: uri + - name: serviceId + in: path + description: Service identifier + required: true + style: simple + explode: false + schema: + type: string + format: uri + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/FedServiceInfo' + "400": + description: "Bad Request: used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' +components: + schemas: + ProblemDetails: + type: object + properties: + type: + type: string + description: A URI reference according to IETF RFC 3986 that identifies + the problem type + format: uri + title: + type: string + description: "A short, human-readable summary of the problem type" + status: + type: integer + description: The HTTP status code for this occurrence of the problem + format: uint32 + detail: + type: string + description: A human-readable explanation specific to this occurrence of + the problem + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + instance: + type: string + description: A URI reference that identifies the specific occurrence of + the problem + format: uri + FedServiceInfo: + title: FedServiceInfo + required: + - mecHostInformation + - serviceInfo + - systemId + type: object + properties: + systemId: + type: string + description: Identifier of the MEC system. + mecHostInformation: + $ref: '#/components/schemas/MecHostInformation' + serviceInfo: + $ref: '#/components/schemas/ServiceInfo' + description: This data type represents the general information of a MEC service + in a MEC federation. The attributes of the FedServiceInfo shall follow the + indications provided in Table 6.2.4-1. + example: + systemId: systemId + serviceInfo: + serCategory: + name: name + href: href + id: id + version: version + transportsSupported: + - serializers: + - JSON + - JSON + transport: + implSpecificInfo: implSpecificInfo + protocol: protocol + security: + (extensions): + - (extensions) + - (extensions) + oAuth2Info: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + name: name + description: description + type: REST_HTTP + version: version + - serializers: + - JSON + - JSON + transport: + implSpecificInfo: implSpecificInfo + protocol: protocol + security: + (extensions): + - (extensions) + - (extensions) + oAuth2Info: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + name: name + description: description + type: REST_HTTP + version: version + serName: serName + version: version + mecHostInformation: + hostName: hostName + hostId: hostId + SystemInfo: + title: SystemInfo + required: + - systemId + - systemName + - systemProvider + type: object + properties: + systemId: + type: string + description: "Identifier of the MEC system. For the uniqueness of the identifier\ + \ across the federated MEC systems, UUID format [i.9] is recommended.\ + \ Shall be absent in POST request, and present otherwise." + systemName: + type: string + description: The name of the MEC system. This is how the MEC system identifies + other MEC systems + systemProvider: + type: string + description: Provider of the MEC system. + description: This type represents an information provided by the MEC orchestrator + as a part of the "Registration of MEC system to the federation + example: + systemId: systemId + systemName: systemName + systemProvider: systemProvider + ServiceInfo: + title: SystemInfo + required: + - serName + - transportsSupported + - version + type: object + properties: + serName: + type: string + description: The name of the service + serCategory: + $ref: '#/components/schemas/CategoryRef' + version: + type: string + description: The version of the service + transportsSupported: + type: array + items: + $ref: '#/components/schemas/TransportsSupported' + description: The ServiceDescriptor data type describes a MEC service produced + by a service-providing MEC application. + example: + serCategory: + name: name + href: href + id: id + version: version + transportsSupported: + - serializers: + - JSON + - JSON + transport: + implSpecificInfo: implSpecificInfo + protocol: protocol + security: + (extensions): + - (extensions) + - (extensions) + oAuth2Info: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + name: name + description: description + type: REST_HTTP + version: version + - serializers: + - JSON + - JSON + transport: + implSpecificInfo: implSpecificInfo + protocol: protocol + security: + (extensions): + - (extensions) + - (extensions) + oAuth2Info: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + name: name + description: description + type: REST_HTTP + version: version + serName: serName + version: version + SystemInfoUpdate: + title: SystemInfoUpdate + type: object + properties: + systemName: + type: string + description: The name of the MEC system. This is how the MEC system identifies + other MEC systems. + endpoint: + $ref: '#/components/schemas/EndPointInfo' + description: "This type represents an information provided by MEC orchestrator\ + \ as a part of the \nUpdate of MEC system(s) to the federation.\n" + EndPointInfo: + title: EndPointInfo + type: string + description: "Endpoint information (e.g. URI, FQDN, IP address) of MEC federator." + SystemUpdateNotificationSubscription: + title: SystemUpdateNotificationSubscription + required: + - callbackReference + - subscriptionType + type: object + properties: + subscriptionType: + type: string + description: Shall be set to "SystemUpdateNotificationSubscription". + callbackReference: + type: string + description: URI selected by the MEC orchestrator to receive notifications + on the subscribed MEC system information updates in the MEC federation. + This shall be included in both the request and the response. + format: uri + links: + $ref: '#/components/schemas/links' + systemId: + minItems: 0 + type: array + description: "Identifier(s) to uniquely specify the target MEC system(s)\ + \ for the subscription. If absent, the subscription should include all\ + \ MEC systems in the MEC federation." + items: + type: string + expiryDeadline: + $ref: '#/components/schemas/TimeStamp' + description: This type represents a subscription to the notifications from the + MEC federator related to information update of the MEC systems in the MEC + federation. + example: + systemId: + - systemId + - systemId + subscriptionType: subscriptionType + callbackReference: http://example.com/aeiou + expiryDeadline: + seconds: 0 + nanoSeconds: 6 + links: + self: + href: http://example.com/aeiou + SystemUpdateNotification: + title: SystemUpdateNotification + required: + - links + - notificationType + - updatedSystemInfo + type: object + properties: + notificationType: + type: string + description: Shall be set to "SystemUpdateNotification". + updatedSystemInfo: + minItems: 1 + type: array + description: Updated information of the MEC system(s) in the MEC federation. + items: + $ref: '#/components/schemas/SystemInfo' + links: + $ref: '#/components/schemas/links1' + description: This type represents the information that the MEC federator notifies + the subscribed MEC orchestrator about the information update of the MEC systems + in the MEC federation. + TimeStamp: + title: TimeStamp + required: + - nanoSeconds + - seconds + type: object + properties: + seconds: + type: integer + description: "The seconds part of the time. Time is defined as Unixtime\ + \ since January 1, 1970, 00:00:00 UTC." + format: uint32 + nanoSeconds: + type: integer + description: "The nanoseconds part of the time. Time is defined as Unix-time\ + \ since January 1, 1970, 00:00:00 UTC." + format: uint32 + description: The expiration time of the subscription determined by the MEC Federation + Enablement Service. + example: + seconds: 0 + nanoSeconds: 6 + links: + title: links + required: + - self + type: object + properties: + self: + $ref: '#/components/schemas/LinkType' + description: Object containing hyperlinks related to the resource. This shall + only be included in the HTTP responses. + example: + self: + href: http://example.com/aeiou + links1: + title: links1 + required: + - subscription + type: object + properties: + subscription: + $ref: '#/components/schemas/LinkType' + description: Object containing hyperlinks related to the resource. + LinkType: + title: LinkType + required: + - href + type: object + properties: + href: + type: string + description: URI referring to a resource. + format: uri + description: Self-referring URI. The URI shall be unique within the MEC Federation + Enablement API as it acts as an ID for the subscription (SubscriptionId). + example: + href: http://example.com/aeiou + SubscriptionLinkList: + required: + - _links + type: object + properties: + _links: + $ref: '#/components/schemas/links' + subscription: + type: array + items: + $ref: '#/components/schemas/SubscriptionLinkList_subscription' + x-etsi-mec-cardinality: 0..N + x-etsi-mec-origin-type: Structure (inlined) + example: + _links: + self: + href: http://example.com/aeiou + subscription: + - subscriptionType: subscriptionType + href: http://example.com/aeiou + - subscriptionType: subscriptionType + href: http://example.com/aeiou + SubscriptionLinkList_subscription: + required: + - href + - subscriptionType + type: object + properties: + href: + type: string + description: The URI referring to the subscription. + format: uri + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: URI + subscriptionType: + type: string + description: "Type of the subscription. The string shall be set according\ + \ to the \"subscriptionType\" attribute of the associated subscription\ + \ data type defined in 6.3.2, 6.3.3. and 6.3.5:\n“AssocStaSubscription”\ + \n“StaDataRateSubscription”\n“MeasurementReportSubscription”" + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String + example: + subscriptionType: subscriptionType + href: http://example.com/aeiou + MecHostInformation: + title: MecHostInformation + required: + - hostId + type: object + properties: + hostName: + type: string + description: Human-readable name of MEC host + hostId: + type: string + description: Deployment-specific information to identify a MEC host + description: The data type represents the parameters of MEC host information + example: + hostName: hostName + hostId: hostId + TransportsSupported: + title: TransportsSupported + required: + - serializers + type: object + properties: + transport: + $ref: '#/components/schemas/TransportDescriptor' + serializers: + type: array + description: "Information about the serializers in this binding, as defined\ + \ in the SerializerTypes type in ETSI GS MEC 011" + items: + $ref: '#/components/schemas/SerializerType' + description: Indicates transports and serialization formats supported made available + to the service-consuming application. Defaults to REST + JSON if absent. + example: + serializers: + - JSON + - JSON + transport: + implSpecificInfo: implSpecificInfo + protocol: protocol + security: + (extensions): + - (extensions) + - (extensions) + oAuth2Info: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + name: name + description: description + type: REST_HTTP + version: version + CategoryRef: + title: CategoryRef + required: + - href + - id + - name + - version + type: object + properties: + href: + type: string + description: Reference of the catalogue. + id: + type: string + description: Unique identifier of the category. + name: + type: string + description: Name of the category. + version: + type: string + description: Category version. + description: This type represents the category reference. + example: + name: name + href: href + id: id + version: version + 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: + $ref: '#/components/schemas/SecurityInfo' + type: + $ref: '#/components/schemas/TransportTypes' + version: + type: string + description: The version of the protocol used. + implSpecificInfo: + type: string + description: Additional implementation specific details of the transport. + example: + implSpecificInfo: implSpecificInfo + protocol: protocol + security: + (extensions): + - (extensions) + - (extensions) + oAuth2Info: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + name: name + description: description + type: REST_HTTP + version: version + TransportTypes: + type: string + description: The enumeration TransportType represents types of transports. + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + x-etsi-ref: 8.1.6.4 + x-etsi-mec-extensible: true + x-etsi-mec-enumeration-table: + - value: REST_HTTP + description: "RESTful API using HTTP (as defined in IETF RFC 9110 [11])." + - value: MB_TOPIC_BASED + description: "Topic-based message bus which routes messages to receivers based\ + \ on subscriptions, if a pattern passed on subscription matches the topic\ + \ of the message. EXAMPLE MQTT (see [i.4])." + - value: MB_ROUTING + description: "Routing-based message bus which routes messages to receivers\ + \ based on subscriptions, if a key passed on subscription is equal to the\ + \ key of the message." + - value: MB_PUBSUB + description: Publish-subscribe based message bus which distributes messages + to all subscribers. + - value: RPC + description: "Remote procedure call. EXAMPLE GRPC (see [i.5])." + - value: RPC_STREAMING + description: "Remote procedure call supporting streams of requests and responses.\ + \ EXAMPLE GRPC (see [i.5])." + - value: WEBSOCKET + description: "Websockets as defined in IETF RFC 6455 [12]." + SecurityInfo: + type: object + properties: + oAuth2Info: + $ref: '#/components/schemas/OAuth2Info' + (extensions): + minItems: 0 + type: array + description: "'Extensions for alternative transport mechanisms. These extensions\ + \ depend on the actual transport, and are out of scope of the present\ + \ document. For instance, such extensions may be used to signal the necessary\ + \ parameters for the client to use TLSbased authorization defined for\ + \ alternative transports (see ETSI GS MEC 009 [5] for more information).'\n" + items: + type: string + example: + (extensions): + - (extensions) + - (extensions) + oAuth2Info: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + OAuth2Info: + required: + - grantTypes + type: object + properties: + grantTypes: + minItems: 0 + type: array + description: | + "List of supported OAuth 2.0 grant types.\nEach entry shall be one of the following permitted values:\nOAUTH2_AUTHORIZATION_CODE (Authorization code grant type)\nOAUTH2_IMPLICIT_GRANT\n \t(Implicit grant type)\nOAUTH2_RESOURCE_OWNER\n\t(Resource owner password credentials grant type) \nOAUTH2_CLIENT_CREDENTIALS\n\t(Client credentials grant type)\nOnly the value \"OAUTH2_CLIENT_CREDENTIALS\" is supported in the present document. " + items: + type: string + enum: + - SEE_DESCRIPTION + tokenEndpoint: + type: string + description: The token endpoint. Shall be present unless the grant type + is OAUTH2_IMPLICIT_GRANT. + format: uri + description: "Parameters related to use of OAuth 2.0. Shall be present in case\ + \ OAuth 2.0 (see IETF RFC 6749 [13]) is supported to secure the provision\ + \ of the service over the transport.\n" + example: + tokenEndpoint: http://example.com/aeiou + grantTypes: + - SEE_DESCRIPTION + - SEE_DESCRIPTION + SerializerType: + title: SerializerType + type: string + description: "The enumeration SerializerType represents types of serializers.\ + \ This enumeration shall be extensible.\nNOTE: The enumeration values above\ + \ shall represent the serializers as defined by the referenced specifications.\ + \ \n" + enum: + - JSON + - XML + - PROTOBUF3 + fed_resources_systems_body: + type: object + properties: + SystemInfo: + $ref: '#/components/schemas/SystemInfo' + example: + SystemInfo: + systemId: systemId + systemName: systemName + systemProvider: systemProvider + systems_systemId_body: + type: object + properties: + SystemInfoUpdate: + $ref: '#/components/schemas/SystemInfoUpdate' + responses: + "204": + description: No Content + "400": + description: "Bad Request: used to indicate that incorrect parameters were passed\ + \ to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden: operation is not allowed given the current status of\ + \ the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found: used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + parameters: + Query.systemId: + name: systemId + in: query + description: Identifier of the MEC system. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + x-exportParamName: Query.systemId + Path.systemId: + name: systemId + in: path + description: Identifier of the MEC system. + required: true + style: simple + explode: false + schema: + type: string + x-exportParamName: Path.systemId + Query.systemName: + name: systemName + in: query + description: The name of the MEC system. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + x-exportParamName: Query.systemName + Query.systemProvider: + name: systemProvider + in: query + description: Provider of the MEC system. + required: false + style: form + explode: true + schema: + type: array + items: + type: string + x-exportParamName: Query.systemProvider + Query.seInstancerId: + name: seInstancerId + in: query + description: Indicator of a MEC service offered for MEC federation. + required: false + style: form + explode: true + schema: + type: string + x-exportParamName: Query.seInstancerId + Query.serName: + name: serName + in: query + description: The name of the service. + required: false + style: form + explode: true + schema: + type: string + x-exportParamName: Query.serName + Query.serCategory: + name: serCategory + in: query + description: A Category reference. + required: false + style: form + explode: true + schema: + type: string + x-exportParamName: Query.serCategory diff --git a/config/permissions.yaml b/config/permissions.yaml index 59731f7..11824c3 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -703,6 +703,33 @@ services: roles: admin: 'allow' user: 'allow' + #------------------------------ + # FED Service (Sbox) + #------------------------------ + - name: 'meep-federation' + path: '/fed_enablement/v1' + sbox: true + default: + mode: 'allow' + fileservers: + - name: 'Api' + path: '/api' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'UserApi' + path: '/user-api' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + #------------------------------ # RNI Service (Sbox) #------------------------------ diff --git a/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js b/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js index 3c623e8..e1ec130 100644 --- a/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js +++ b/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js @@ -78,7 +78,7 @@ class DetailedDataDialog extends Component { mapService(loggerName) { //loggerName is a combination of loggerName and mep name - let prefixes = ['meep-loc-serv', 'meep-rnis', 'meep-dai', 'meep-wais', 'meep-app-enablement', 'meep-ams', 'meep-vis', 'meep-tm']; + let prefixes = ['meep-loc-serv', 'meep-federation', 'meep-rnis', 'meep-dai', 'meep-wais', 'meep-app-enablement', 'meep-ams', 'meep-vis', 'meep-tm']; let prefixStd = ''; var prefix = ''; for (var i = 0; i < prefixes.length; i++) { @@ -89,20 +89,14 @@ class DetailedDataDialog extends Component { } switch(prefix) { - case 'meep-loc-serv': - prefixStd = '013'; + case 'meep-app-enablement': + prefixStd = '011'; break; case 'meep-rnis': prefixStd = '012'; break; - case 'meep-wais': - prefixStd = '028'; - break; - case 'meep-app-enablement': - prefixStd = '011'; - break; - case 'meep-ams': - prefixStd = '021'; + case 'meep-loc-serv': + prefixStd = '013'; break; case 'meep-tm': prefixStd = '015'; @@ -110,9 +104,18 @@ class DetailedDataDialog extends Component { case 'meep-dai': prefixStd = '016'; break; + case 'meep-ams': + prefixStd = '021'; + break; + case 'meep-wais': + prefixStd = '028'; + break; case 'meep-vis': prefixStd = '030'; break; + case 'meep-federation': + prefixStd = '040'; + break; default: prefixStd = 'N/A'; } diff --git a/js-apps/frontend/src/js/containers/app-container.js b/js-apps/frontend/src/js/containers/app-container.js index 36b906c..eeea90e 100644 --- a/js-apps/frontend/src/js/containers/app-container.js +++ b/js-apps/frontend/src/js/containers/app-container.js @@ -120,7 +120,7 @@ const apiTableMaxSize = 100; var metricsQuery = { /* tags: [{ name: 'logger_name', - value: 'meep-loc-serv,meep-rnis,meep-dai,meep-wais,meep-app-enablement' + value: 'meep-loc-serv,meep-federation,meep-rnis,meep-dai,meep-wais,meep-app-enablement' }], */ fields: ['id', 'endpoint', 'url', 'method', 'resp_code', 'resp_body', 'body', 'proc_time', 'logger_name', 'direction'], diff --git a/js-apps/frontend/src/js/containers/sandbox/api-table.js b/js-apps/frontend/src/js/containers/sandbox/api-table.js index ffdc0cc..5e4fddc 100644 --- a/js-apps/frontend/src/js/containers/sandbox/api-table.js +++ b/js-apps/frontend/src/js/containers/sandbox/api-table.js @@ -111,7 +111,7 @@ class ApiTable extends Component { mapService(loggerName) { //loggerName is a combination of loggerName and mep name - let prefixes = ['meep-loc-serv', 'meep-rnis', 'meep-dai', 'meep-wais', 'meep-app-enablement', 'meep-ams', 'meep-vis', 'meep-tm']; + let prefixes = ['meep-loc-serv', 'meep-rnis', 'meep-federation', 'meep-dai', 'meep-wais', 'meep-app-enablement', 'meep-ams', 'meep-vis', 'meep-tm']; let prefixStd = ''; var prefix = ''; for (var i = 0; i < prefixes.length; i++) { diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index 769e565..73dd168 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -641,7 +641,58 @@ export function parseEdgeApps(scenario) { enableInProgressCount: -1, disableInProgressCount: -1 }); - } + // MEC016 + } else if (proc.image.includes('meep-dai')) { + edgeApps.push({ + id: proc.id, + name: proc.name, + instance: '', + img: proc.image, + mepName: pl.name, + env: proc.environment, + url: 'api/?urls.primaryName='+pl.name+'%20-%20Device%20Application%20Interface%20REST%20API', + path: pl.name+'/dev_app/v1', + pseudoName: 'Device Application Interface (016) on ' + pl.name, + dropDownName: 'Device Application Interface (016)', + enabled: false, + enableInProgressCount: -1, + disableInProgressCount: -1 + }); + // MEC040 + } else if (proc.image.includes('meep-federation')) { + // App support + edgeApps.push({ + id: proc.id, + name: proc.name, + instance: '', + img: proc.image, + mepName: pl.name, + env: proc.environment, + url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20Federation%20Service%20API', + path: pl.name+'/mec_app_support/v2', + pseudoName: 'MEC Application Support (011) on ' + pl.name, + dropDownName: 'MEC Application Support (011)', + enabled: true, // always running + enableInProgressCount: -1, + disableInProgressCount: -1 + }); + // Service Management + edgeApps.push({ + id: proc.id, + name: proc.name+'-service-mgmt', + instance: '', + img: proc.image, + mepName: pl.name, + env: proc.environment, + url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20Service%20Management%20API', + path: pl.name+'/fed_enablement/v1', + pseudoName: 'MEC Federation (040) on ' + pl.name, + dropDownName: 'MEC Federation (011)', + enabled: true, // always running + enableInProgressCount: -1, + disableInProgressCount: -1 + }); + } } } } -- GitLab From fed2b35152ddba0cdfab31142ca819b09fb321cc Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Fri, 9 Aug 2024 05:58:16 +0000 Subject: [PATCH 24/58] modify shell scripts for the deployment of sandbox with new repository name --- build.sh | 2 +- deploy.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index da9fc7a..2f69bca 100755 --- a/build.sh +++ b/build.sh @@ -4,7 +4,7 @@ SCRIPT=$(readlink -f "$0") BASEDIR=$(dirname "$SCRIPT") -MEEPDIR=~/AdvantEDGE +MEEPDIR=~/etsi-mec-sandbox install_package() { echo "" diff --git a/deploy.sh b/deploy.sh index f8a873b..dc26119 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,7 +4,7 @@ SCRIPT=$(readlink -f "$0") BASEDIR=$(dirname "$SCRIPT") -MEEPDIR=~/AdvantEDGE +MEEPDIR=~/etsi-mec-sandbox CONFIGDIR=$MEEPDIR/config DASHBOARDDIR=$MEEPDIR/charts/grafana/dashboards APIDIR=$MEEPDIR/config/api -- GitLab From 43ae8e0ef1e8c16a2550d27ce1637d66615fb55d Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Fri, 9 Aug 2024 05:59:42 +0000 Subject: [PATCH 25/58] update mec015 OAS as per v3.1.1 --- config/api/bwm-api.yaml | 894 ++++++++++++++++++++++++++++++++++------ config/api/mts-api.yaml | 450 +++++++++++++------- 2 files changed, 1063 insertions(+), 281 deletions(-) diff --git a/config/api/bwm-api.yaml b/config/api/bwm-api.yaml index 4c57bba..1700f66 100644 --- a/config/api/bwm-api.yaml +++ b/config/api/bwm-api.yaml @@ -1,21 +1,25 @@ openapi: 3.0.0 info: + title: AdvantEDGE Bandwidth Management API + description: "Bandwidth Management Sercice is AdvantEDGE's implementation of [ETSI\ + \ MEC ISG MEC015 Traffic Management APIs](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/03.01.01_60/gs_MEC015v030101p.pdf)\ + \

[Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)\ + \

**Micro-service**
[meep-tm](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-tm/server/bwm)\ + \

**Type & Usage**
Edge Service used by edge applications that want to get\ + \ information about BWM Info and Session(s) in the network

**Note**
AdvantEDGE\ + \ supports all Bandwidth Management API endpoints." contact: - url: 'https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api' - title: ETSI GS MEC 015 - Bandwidth Management API - version: 2.2.1 - description: >- - 'The ETSI MEC ISG MEC015 Bandwidth Management API described using OpenAPI -

**Note**
MEC Sandbox supports all BWM API endpoints; complete details on the BWM API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/02.02.01_60/gs_mec015v020201p.pdf).' + name: InterDigital AdvantEDGE Support + email: AdvantEDGE@InterDigital.com license: - name: BSD-3-Clause - url: 'https://forge.etsi.org/legal-matters' + name: Apache 2.0 + url: https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE + version: 3.1.1 externalDocs: - description: ETSI MEC015 V2.2.1 Traffic Management API - url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/02.02.01_60/gs_mec015v020201p.pdf + description: ETSI GS MEC015 V3.1.1 Traffic Management APIs + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/03.01.01_60/gs_MEC015v030101p.pdf servers: - - url: 'https://localhost/sandboxname/bwm/v1' +- url: https://localhost/sandboxname/bwm/v1 tags: - name: bwm paths: @@ -69,8 +73,8 @@ paths: type: string responses: "200": - description: Upon success, a response body containing an array of the bandwidthAllocations - is returned. + description: "Upon success, a response body containing an array of the bandwidthAllocations\ + \ is returned." content: application/json: schema: @@ -79,22 +83,28 @@ paths: $ref: '#/components/schemas/BwInfo' x-content-type: application/json "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too many requests: It is used when a rate limiter has triggered." content: application/problem+json: schema: @@ -117,29 +127,36 @@ paths: required: true responses: "201": - description: Upon success, the HTTP response shall include a 'Location' - HTTP header that contains the resource URI of the created resource. + description: "Upon success, the HTTP response shall include a 'Location'\ + \ HTTP header that contains the resource URI of the created resource." content: application/json: schema: $ref: '#/components/schemas/BwInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : It is used to indicate the server cannot provide any\ + \ of the content formats supported by the clients" content: application/problem+json: schema: @@ -171,22 +188,28 @@ paths: schema: $ref: '#/components/schemas/BwInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too many requests: It is used when a rate limiter has triggered." content: application/problem+json: schema: @@ -195,8 +218,8 @@ paths: tags: - bwm summary: Update the information about a specific bandwidthAllocation - description: Updates the information about a bandwidthAllocation resource. As - specified in ETSI GS MEC 009 [6], the PUT HTTP method has 'replace' semantics. + description: "Updates the information about a bandwidthAllocation resource.\ + \ As specified in ETSI GS MEC 009 [6], the PUT HTTP method has 'replace' semantics." operationId: bandwidthAllocationPUT parameters: - name: allocationId @@ -224,30 +247,37 @@ paths: schema: $ref: '#/components/schemas/BwInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : It is used to indicate the server cannot provide any\ + \ of the content formats supported by the clients" content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "412": - description: 'Precondition failed : used when a condition has failed during - conditional requests, e.g. when using ETags to avoid write conflicts when - using PUT' + description: "Precondition failed : used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts\ + \ when using PUT" content: application/problem+json: schema: @@ -270,18 +300,18 @@ paths: type: string responses: "204": - description: Upon success, a response 204 No Content without any response - body is returned. + description: "Upon success, a response 204 No Content without any response\ + \ body is returned." "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." content: application/problem+json: schema: @@ -291,10 +321,10 @@ paths: - bwm summary: Modify the information about a specific existing bandwidthAllocation by sending updates on the data structure - description: Updates the information about a bandwidthAllocation resource. As - specified in ETSI GS MEC 009 [6], the PATCH HTTP method updates a resource - on top of the existing resource state by just including the changes ('deltas') - in the request body. + description: "Updates the information about a bandwidthAllocation resource.\ + \ As specified in ETSI GS MEC 009 [6], the PATCH HTTP method updates a resource\ + \ on top of the existing resource state by just including the changes ('deltas')\ + \ in the request body." operationId: bandwidthAllocationPATCH parameters: - name: allocationId @@ -322,36 +352,563 @@ paths: schema: $ref: '#/components/schemas/BwInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : It is used to indicate the server cannot provide any\ + \ of the content formats supported by the clients" content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "412": - description: 'Precondition failed : used when a condition has failed during - conditional requests, e.g. when using ETags to avoid write conflicts when - using PUT' + description: "Precondition failed : used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts\ + \ when using PUT" + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /notifications/mec011/appTermination: + post: + tags: + - location + summary: MEC011 Application Termination notification for self termination + description: Terminates itself. + operationId: mec011AppTerminationPOST + requestBody: + description: Termination notification details + content: + application/json: + schema: + $ref: '#/components/schemas/AppTerminationNotification' + example: + notificationType: AppTerminationNotification + operationAction: TERMINATING + maxGracefulTimeout: 10 + links: + subscription: + href: http://mec011Server.example.com/mec_app_support/v1/applications/appId1234/subscriptions/sub123 + confirmTermination: + href: http://mec011Server.example.com/mec_app_support/v1/confirm_termination + required: true + responses: + "204": + description: No Content + x-swagger-router-controller: notifications + /subscriptions: + get: + tags: + - unsupported + summary: Get Subscription Links + description: The GET method is used to request information about the subscriptions for this requestor. + parameters: + - name: subscription_type + in: query + required: false + schema: + type: string + enum: + - bw_chg + description: "Query parameter to filter on a specific subscription type. Permitted values: bw_chg." + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + responses: + '200': + description: Successful response with the list of links to requestor's subscriptions. + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionLinkList' + "400": + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: "Unauthorized: It is used when the client did not submit credentials." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "406": + description: "Not Acceptable : It is used to indicate the server cannot provide any\ + \ of the content formats supported by the clients" + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too many requests: It is used when a rate limiter has triggered." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + post: + tags: + - unsupported + summary: Create a new subscription + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BwChgEventSubscription' + responses: + '201': + description: "Created: Indicates successful resource creation, where the resource URI shall be\ + \ returned in the HTTP Location header field." + content: + application/json: + schema: + $ref: '#/components/schemas/BwChgEventSubscription' + '400': + description: "Bad Request: Incorrect parameters were passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: "Unauthorized: The client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: "Forbidden: The operation is not allowed given the current status of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: "Not Found: The client provided a URI that cannot be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: "Not Acceptable: The server cannot provide any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '415': + description: "Unsupported Media Type: The server or the client does not support the content type of the entity body." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '422': + description: "Unprocessable Entity: The server understands the content type of the request entity and\ + \ the syntax of the request entity is correct but the server is unable to process the contained instructions." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: "Too Many Requests: A rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + callbacks: + BwChgEventNotification: + '{$request.body#/callbackReference}': + post: + tags: + - callbacks + summary: Create callback + description: The POST method delivers a notification from the BWM service to the subscriber + operationId: BwChgEventNotification_POST + requestBody: + $ref: '#/components/requestBodies/BwChgEventNotification' + responses: + "204": + description: The notification was delivered successfully. + '401': + description: "Unauthorized: The client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: "Too Many Requests: A rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + /subscriptions/{subscriptionId}: + get: + tags: + - unsupported + summary: Retrieve individual subscription information + description: The GET method is used to retrieve information about this subscription + parameters: + - name: subscriptionId + in: path + required: true + schema: + type: string + description: The ID of the subscription to be updated. + responses: + '200': + description: Successful response with the data type describing the specific BWM event subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/BwChgEventSubscription' + '400': + description: "Bad Request: Incorrect parameters were passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: "Unauthorized: The client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: "Forbidden: The operation is not allowed given the current status of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: "Not Found: The client provided a URI that cannot be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: "Not Acceptable: The server cannot provide any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: "Too Many Requests: A rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + put: + tags: + - unsupported + summary: Update an existing subscription + description: The PUT method is used to update the existing subscription. + parameters: + - name: subscriptionId + in: path + required: true + schema: + type: string + description: The ID of the subscription to be updated. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BwChgEventSubscription' + responses: + '200': + description: Successful response with the data type describing the updated subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/BwChgEventSubscription' + '400': + description: "Bad Request: Incorrect parameters were passed to the request." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: "Unauthorized: The client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: "Forbidden: The operation is not allowed given the current status of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: "Not Found: The client provided a URI that cannot be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: "Not Acceptable: The server cannot provide any of the content formats supported by the client." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '412': + description: "Precondition Failed: A condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '422': + description: "Unprocessable Entity: The server understands the content type of the request entity and\ + \ the syntax of the request entity is correct but the server is unable to process the contained instructions." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: "Too Many Requests: A rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + delete: + tags: + - unsupported + summary: Cancel an existing subscription + description: The DELETE method is used to cancel the existing subscription + parameters: + - name: subscriptionId + in: path + required: true + schema: + type: string + description: The ID of the subscription to be canceled. + responses: + '204': + description: "No Content: Successful operation with no content returned." + '401': + description: "Unauthorized: The client did not submit credentials." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: "Forbidden: The operation is not allowed given the current status of the resource." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: "Not Found: The client provided a URI that cannot be mapped to a valid resource URI." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: "Too Many Requests: A rate limiter has triggered." + content: + application/json: + schema: + $ref: '#/components/schemas/ProblemDetails' components: schemas: + BwChgEventSubscription: + type: object + required: + - subscriptionType + - filterCriteria + properties: + subscriptionType: + type: string + description: Shall be set to "BwChgEventSubscription". + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + callbackReference: + type: string + format: uri + description: URI exposed by the client on which to receive notifications via HTTP. See note 1. + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + websockNotifConfig: + $ref: '#/components/schemas/WebsockNotifConfig' + _links: + $ref: '#/components/schemas/BwChgEventSubscription_links' + filterCriteria: + type: array + items: + type: object + description: List of filtering criteria for the BW change event subscription. Any filtering \ + \ criteria from below, which is included in the request, shall also be included in the response. + required: + - appInsId + properties: + appInsId: + type: string + description: Application instance identifier. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + ueIp: + type: string + description: Source address identity of session. See note 2. + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + x-etsi-notes: "NOTE 1: At least one of callbackReference and websockNotifConfig shall be provided by the \ + \ service consumer. If both are provided, it is up to BWM service to choose an alternative and return only \ + \ that alternative in the response, as described in ETSI GS MEC 009 [6], clause 6.12a. \ + \ NOTE 2: For the case of session specific bw allocation, ueIp shall be used to identify subscription per UE per application." + WebsockNotifConfig: + type: object + properties: + websocketUri: + type: string + format: uri + description: Set by BWM service to indicate to the service consumer the web socket URI to be used for delivering notifications. + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Uri + requestWebsocketUri: + type: boolean + description: Set to TRUE by the service consumer to indicate that Websocket delivery is requested. + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: Boolean + BwChgEventSubscription_links: + type: object + required: + - self + properties: + self: + $ref: '#/components/schemas/LinkType' + SubscriptionLinkList: + type: object + properties: + _links: + $ref: '#/components/schemas/SubscriptionLinkList_links' + SubscriptionLinkList_links: + type: object + description: List of hyperlinks related to the resource. + required: + - self + properties: + self: + $ref: '#/components/schemas/LinkType' + subscriptions: + type: array + description: The service consumer's subscriptions. + items: + $ref: '#/components/schemas/SubscriptionLinkList_links_subscriptions' + SubscriptionLinkList_links_subscriptions: + type: object + required: + - href + - subscriptionType + properties: + href: + type: string + format: uri + description: The URI referring to the subscription. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: Uri + subscriptionType: + type: string + description: Type of the subscription. The string shall be set according to the "subscriptionType" attribute \ + \ of the associated subscription data type event defined in clause 7.3. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + # BwChgEventNotification: + # type: object + # required: + # - notificationType + # - dataVolDispersion + # properties: + # notificationType: + # type: string + # description: Shall be set to "BwChgEventNotification". + # x-etsi-mec-cardinality: 1 + # x-etsi-mec-origin-type: String + # timeStamp: + # $ref: '#/components/schemas/Timestamp' + # dataVolDispersion: + # type: array + # description: List of data volume dispersion information. + # items: + # $ref: '#/components/schemas/DataVolDispersion' + # _links: + # $ref: '#/components/schemas/BwChgEventNotification_links' + DataVolDispersion: + type: object + required: + - dataVol + - appInsId + properties: + dataVol: + type: integer + format: int32 + description: Sum of data volume (UL/DL) exchanged per UE per applications, ETSI TS 123 288 [i.4]. See note. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: Uint32 + appInsId: + type: string + description: Application instance identifier. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + ueIp: + type: string + description: Source address identity of session. + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + x-etsi-notes: "NOTE: The dataVolDispersion can be reported either as the total data volume of the session or \ + \ periodically. dataVolDispersion shall provide information on data consumption per UE, in case of higher/lower data \ + \ consumption, the service consumer can update the allocated bandwidth." + BwChgEventNotification_links: + type: object + description: Link to resource related to this notification. + required: + - subscription + properties: + subscription: + $ref: '#/components/schemas/LinkType' BwInfo: required: - allocationDirection @@ -367,8 +924,9 @@ components: x-etsi-mec-origin-type: String allocationDirection: type: string - description: 'The direction of the requested BW allocation: 00 = Downlink - (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical' + description: "The direction of the requested BW allocation: 00 = Downlink\ + \ (towards the UE) 01 = Uplink (towards the application/session) 10 =\ + \ Symmetrical" x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String appInsId: @@ -383,7 +941,7 @@ components: x-etsi-mec-origin-type: String fixedAllocation: type: string - description: Size of requested fixed BW allocation in [bps] + description: "Size of requested fixed BW allocation in [bps]" x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String fixedBWPriority: @@ -397,8 +955,8 @@ components: x-etsi-mec-origin-type: Enum requestType: type: integer - description: 'Numeric value (0 - 255) corresponding to specific type of - consumer as following: 0 = APPLICATION_SPECIFIC_BW_ALLOCATION 1 = SESSION_SPECIFIC_BW_ALLOCATION' + description: "Numeric value (0 to 255) corresponding to specific type of\ + \ consumer as following: 0 = APPLICATION_SPECIFIC_BW_ALLOCATION 1 = SESSION_SPECIFIC_BW_ALLOCATION" enum: - 0 - 1 @@ -407,16 +965,16 @@ components: sessionFilter: minItems: 0 type: array - description: Session filtering criteria, applicable when requestType is - set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define - a single session only. In case multiple sessions match sessionFilter the - request shall be rejected + description: "Session filtering criteria, applicable when requestType is\ + \ set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall\ + \ define a single session only. In case multiple sessions match sessionFilter\ + \ the request shall be rejected" items: $ref: '#/components/schemas/BwInfo_sessionFilter' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: Structure (inlined) timeStamp: - $ref: '#/components/schemas/BwInfo_timeStamp' + $ref: '#/components/schemas/Timestamp' example: timeStamp: seconds: 1 @@ -442,6 +1000,7 @@ components: x-etsi-ref: 7.2.2 BwInfoDeltas: required: + - allocationId - appInsId - requestType type: object @@ -453,8 +1012,9 @@ components: x-etsi-mec-origin-type: String allocationDirection: type: string - description: 'The direction of the requested BW allocation: 00 = Downlink - (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical' + description: "The direction of the requested BW allocation: 00 = Downlink\ + \ (towards the UE) 01 = Uplink (towards the application/session) 10 =\ + \ Symmetrical" x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String appInsId: @@ -464,7 +1024,7 @@ components: x-etsi-mec-origin-type: String fixedAllocation: type: string - description: Size of requested fixed BW allocation in [bps] + description: "Size of requested fixed BW allocation in [bps]" x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String fixedBWPriority: @@ -478,8 +1038,8 @@ components: x-etsi-mec-origin-type: Enum_inlined requestType: type: integer - description: 'Numeric value (0 - 255) corresponding to specific type of - consumer as following: 0 = APPLICATION_SPECIFIC_BW_ALLOCATION 1 = SESSION_SPECIFIC_BW_ALLOCATION' + description: "Numeric value (0 to 255) corresponding to specific type of\ + \ consumer as following: 0 = APPLICATION_SPECIFIC_BW_ALLOCATION 1 = SESSION_SPECIFIC_BW_ALLOCATION" enum: - 0 - 1 @@ -488,10 +1048,10 @@ components: sessionFilter: minItems: 0 type: array - description: Session filtering criteria, applicable when requestType is - set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define - a single session only. In case multiple sessions match sessionFilter the - request shall be rejected + description: "Session filtering criteria, applicable when requestType is\ + \ set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall\ + \ define a single session only. In case multiple sessions match sessionFilter\ + \ the request shall be rejected" items: $ref: '#/components/schemas/BwInfoDeltas_sessionFilter' x-etsi-mec-cardinality: 0..N @@ -521,7 +1081,7 @@ components: x-etsi-mec-origin-type: Uint32 title: type: string - description: A short, human-readable summary of the problem type + description: "A short, human-readable summary of the problem type" x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String type: @@ -531,22 +1091,61 @@ components: format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: URI + AppTerminationNotification: + required: + - _links + - maxGracefulTimeout + - notificationType + - operationAction + type: object + properties: + notificationType: + type: string + description: Shall be set to AppTerminationNotification. + operationAction: + $ref: '#/components/schemas/OperationActionType' + maxGracefulTimeout: + type: integer + description: Maximum timeout value in seconds for graceful termination or + graceful stop of an application instance. + format: uint32 + _links: + $ref: '#/components/schemas/AppTerminationNotification__links' + description: This type represents the information that the MEC platform notifies + the subscribed application instance about the corresponding application instance + termination/stop. + OperationActionType: + type: string + description: Operation that is being performed on the MEC application instance. + enum: + - STOPPING + - TERMINATING + LinkType: + required: + - href + type: object + properties: + href: + type: string + description: URI referring to a resource + format: uri + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Uri BwInfo_sessionFilter: type: object properties: dstAddress: type: string - description: >- - Destination address identity of session. The string for a IPv4 - address shall be formatted in the "dotted decimal" notation as - defined in IETF RFC 1166 [10]. The string for a IPv6 address shall - be formatted according to clause 4 of IETF RFC 5952 [11], with in - CIDR notation [12] used to provide the routing prefix. + description: "Destination address identity of session. The string for a\ + \ IPv4 address shall be formatted in the \"dotted decimal\" notation as\ + \ defined in IETF RFC 1166 [10]. The string for a IPv6 address shall be\ + \ formatted according to clause 4 of IETF RFC 5952 [11], with in CIDR\ + \ notation IETF RFC 4632 [12] used to provide the routing prefix." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String dstPort: - description: Destination port identity of session type: string + description: Destination port identity of session x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String protocol: @@ -554,19 +1153,18 @@ components: description: Protocol number x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String - sourceIp: - type: string - description: >- - Source address identity of session. The string for a IPv4 address - shall be formatted in the "dotted decimal" notation as defined in - IETF RFC 1166 [10]. The string for a IPv6 address shall be formatted - according to clause 4 of IETF RFC 5952 [11], with in CIDR notation - [12] used to provide the routing prefix. + sourceAddress: + type: string + description: "Source address identity of session. The string for a IPv4\ + \ address shall be formatted in the \"dotted decimal\" notation as defined\ + \ in IETF RFC 1166 [10]. The string for a IPv6 address shall be formatted\ + \ according to clause 4 of IETF RFC 5952 [11], with in CIDR notation IETF RFC 4632 [12]\ + \ used to provide the routing prefix." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String sourcePort: - description: Source port identity of session type: string + description: Source port identity of session x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String example: @@ -575,7 +1173,7 @@ components: dstPort: dstPort sourceIp: sourceIp dstAddress: dstAddress - BwInfo_timeStamp: + Timestamp: required: - nanoSeconds - seconds @@ -583,15 +1181,15 @@ components: properties: nanoSeconds: type: integer - description: The nanoseconds part of the Time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: "The nanoseconds part of the Time. Time is defined as Unix-time\ + \ since January 1, 1970, 00:00:00 UTC" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 seconds: type: integer - description: The seconds part of the Time. Time is defined as Unixtime since - January 1, 1970, 00:00:00 UTC + description: "The seconds part of the Time. Time is defined as Unixtime\ + \ since January 1, 1970, 00:00:00 UTC" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 @@ -605,17 +1203,16 @@ components: properties: dstAddress: type: string - description: >- - Destination address identity of session. The string for a IPv4 - address shall be formatted in the "dotted decimal" notation as - defined in IETF RFC 1166 [10]. The string for a IPv6 address shall - be formatted according to clause 4 of IETF RFC 5952 [11], with in - CIDR notation [12] used to provide the routing prefix. + description: "Destination address identity of session. The string for a\ + \ IPv4 address shall be formatted in the \"dotted decimal\" notation as\ + \ defined in IETF RFC 1166 [10]. The string for a IPv6 address shall be\ + \ formatted according to clause 4 of IETF RFC 5952 [11], with in CIDR\ + \ notation IETF RFC 4632 [12] used to provide the routing prefix." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String dstPort: - description: Destination port identity of session type: string + description: Destination port identity of session x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String protocol: @@ -623,50 +1220,59 @@ components: description: Protocol number x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String - sourceIp: - type: string - description: >- - Source address identity of session. The string for a IPv4 address - shall be formatted in the "dotted decimal" notation as defined in - IETF RFC 1166 [10]. The string for a IPv6 address shall be formatted - according to clause 4 of IETF RFC 5952 [11], with in CIDR notation - [12] used to provide the routing prefix. + sourceAddress: + type: string + description: "Source address identity of session. The string for a IPv4\ + \ address shall be formatted in the \"dotted decimal\" notation as defined\ + \ in IETF RFC 1166 [10]. The string for a IPv6 address shall be formatted\ + \ according to clause 4 of IETF RFC 5952 [11], with in CIDR notation IETF RFC 4632 [12]\ + \ used to provide the routing prefix." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String sourcePort: - description: 'Source port identity of session ' type: string + description: 'Source port identity of session ' x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String + AppTerminationNotification__links: + required: + - subscription + type: object + properties: + subscription: + $ref: '#/components/schemas/LinkType' + confirmTermination: + $ref: '#/components/schemas/LinkType' + description: Object containing hyperlinks related to the resource. responses: "204": - description: Upon success, a response 204 No Content without any response body - is returned. + description: "Upon success, a response 204 No Content without any response body\ + \ is returned." "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot be - mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "412": - description: 'Precondition failed : used when a condition has failed during - conditional requests, e.g. when using ETags to avoid write conflicts when - using PUT' + description: "Precondition failed : used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts when\ + \ using PUT" content: application/problem+json: schema: @@ -721,3 +1327,27 @@ components: type: array items: type: string + requestBodies: + BwChgEventNotification: + content: + application/json: + schema: + type: object + required: + - notificationType + - dataVolDispersion + properties: + notificationType: + type: string + description: Shall be set to "BwChgEventNotification". + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + timeStamp: + $ref: '#/components/schemas/Timestamp' + dataVolDispersion: + type: array + description: List of data volume dispersion information. + items: + $ref: '#/components/schemas/DataVolDispersion' + _links: + $ref: '#/components/schemas/BwChgEventNotification_links' diff --git a/config/api/mts-api.yaml b/config/api/mts-api.yaml index 7b83c63..4f9327c 100644 --- a/config/api/mts-api.yaml +++ b/config/api/mts-api.yaml @@ -1,21 +1,25 @@ openapi: 3.0.0 info: + title: AdvantEDGE Multi-access Traffic Steering API + description: "Multi-access Traffic Steering Sercice is AdvantEDGE's implementation\ + \ of [ETSI MEC ISG MEC015 Traffic Management APIs](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/03.01.01_60/gs_MEC015v030101p.pdf)\ + \

[Copyright (c) ETSI 2017](https://forge.etsi.org/etsi-forge-copyright-notice.txt)\ + \

**Micro-service**
[meep-tm](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-tm/server/mts)\ + \

**Type & Usage**
Edge Service used by edge applications that want to get\ + \ information about MTS Info and Session(s) in the network

**Note**
AdvantEDGE\ + \ supports all Multi-access Traffic Steering API endpoints." contact: - url: 'https://forge.etsi.org/rep/mec/gs015-bandwith-mgmt-api' - title: ETSI GS MEC 015 - Multi-access Traffic Steering API - version: 2.2.1 - description: >- - 'The ETSI MEC ISG MEC015 Multi-access Traffic Steering API described using OpenAPI -

**Note**
MEC Sandbox supports all MTS API endpoints; complete details on the MTS API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/02.02.01_60/gs_mec015v020201p.pdf).' + name: InterDigital AdvantEDGE Support + email: AdvantEDGE@InterDigital.com license: - name: BSD-3-Clause - url: 'https://forge.etsi.org/legal-matters' + name: Apache 2.0 + url: https://github.com/InterDigitalInc/AdvantEDGE/blob/master/LICENSE + version: 3.1.1 externalDocs: - description: ETSI MEC015 V2.2.1 Traffic Management API - url: >- - https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/02.02.01_60/gs_mec015v020201p.pdf + description: ETSI GS MEC015 V3.1.1 Traffic Management APIs + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/015/03.01.01_60/gs_MEC015v030101p.pdf servers: - - url: 'https://localhost/sandboxname/mts/v1' +- url: https://localhost/sandboxname/mts/v1 tags: - name: mts paths: @@ -31,29 +35,35 @@ paths: parameters: [] responses: "200": - description: Upon success, a response body containing the MTS capability - information is returned. + description: "Upon success, a response body containing the MTS capability\ + \ information is returned." content: application/json: schema: $ref: '#/components/schemas/MtsCapabilityInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too many requests: It is used when a rate limiter has triggered." content: application/problem+json: schema: @@ -105,8 +115,8 @@ paths: type: string responses: "200": - description: Upon success, a response body containing an array of the MTS - sessions is returned. + description: "Upon success, a response body containing an array of the MTS\ + \ sessions is returned." content: application/json: schema: @@ -115,22 +125,28 @@ paths: $ref: '#/components/schemas/MtsSessionInfo' x-content-type: application/json "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too many requests: It is used when a rate limiter has triggered." content: application/problem+json: schema: @@ -153,29 +169,35 @@ paths: required: true responses: "201": - description: Upon success, the HTTP response shall include a 'Location' - HTTP header that contains the resource URI of the created resource. + description: "Upon success, the HTTP response shall include a 'Location'\ + \ HTTP header that contains the resource URI of the created resource." content: application/json: schema: $ref: '#/components/schemas/MtsSessionInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "405": + description: "Not Allowed : used when the client reached maximum sessions limit." content: application/problem+json: schema: @@ -207,22 +229,28 @@ paths: schema: $ref: '#/components/schemas/MtsSessionInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: "Too many requests: It is used when a rate limiter has triggered." content: application/problem+json: schema: @@ -231,8 +259,8 @@ paths: tags: - mts summary: Update the information about specific MTS session - description: 'Updates the information about an individual MTS session. As specified - in ETSI GS MEC 009 [6], the PUT HTTP method has ''replace'' semantics. ' + description: "Updates the information about an individual MTS session. As specified\ + \ in ETSI GS MEC 009 [6], the PUT HTTP method has 'replace' semantics. " operationId: mtsSessionPUT parameters: - name: sessionId @@ -260,30 +288,30 @@ paths: schema: $ref: '#/components/schemas/MtsSessionInfo' "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "412": - description: 'Precondition failed : used when a condition has failed during - conditional requests, e.g. when using ETags to avoid write conflicts when - using PUT' + description: "Precondition failed : used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts\ + \ when using PUT" content: application/problem+json: schema: @@ -306,22 +334,49 @@ paths: type: string responses: "204": - description: Upon success, a response 204 No Content without any response - body is returned. + description: "Upon success, a response 204 No Content without any response\ + \ body is returned." "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot - be mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot\ + \ be mapped to a valid resource URI." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' + /notifications/mec011/appTermination: + post: + tags: + - mts + summary: MEC011 Application Termination notification for self termination + description: Terminates itself. + operationId: mec011AppTerminationPOST + requestBody: + description: Termination notification details + content: + application/json: + schema: + $ref: '#/components/schemas/AppTerminationNotification' + example: + notificationType: AppTerminationNotification + operationAction: TERMINATING + maxGracefulTimeout: 10 + links: + subscription: + href: http://mec011Server.example.com/mec_app_support/v1/applications/appId1234/subscriptions/sub123 + confirmTermination: + href: http://mec011Server.example.com/mec_app_support/v1/confirm_termination + required: true + responses: + "204": + description: No Content + x-swagger-router-controller: notifications components: schemas: MtsCapabilityInfo: @@ -345,15 +400,15 @@ components: mtsMode: minItems: 1 type: array - description: Numeric value corresponding to a specific MTS operation supported - by the TMS 0 = low cost, i.e. using the unmetered access network connection - whenever it is available 1 = low latency, i.e. using the access network - connection with lower latency 2 = high throughput, i.e. using the access - network connection with higher throughput, or/and multiple access network - connection simultaneously if supported 3 = redundancy, i.e. sending duplicated - (redundancy) packets over multiple access network connections for highreliability - and low-latency applications 4 = QoS, i.e. performing MTS based on the - specific QoS requirements from the app + description: "Numeric value corresponding to a specific MTS operation supported\ + \ by the TMS 0 = low cost, i.e. using the unmetered access network connection\ + \ whenever it is available 1 = low latency, i.e. using the access network\ + \ connection with lower latency 2 = high throughput, i.e. using the access\ + \ network connection with higher throughput, or/and multiple access network\ + \ connection simultaneously if supported 3 = redundancy, i.e. sending\ + \ duplicated (redundancy) packets over multiple access network connections\ + \ for highreliability and low-latency applications 4 = QoS, i.e. performing\ + \ MTS based on the specific QoS requirements from the app" items: type: integer format: uint32 @@ -407,36 +462,46 @@ components: flowFilter: minItems: 1 type: array - description: Traffic flow filtering criteria, applicable only if when requestType - is set as FLOW_SPECIFIC_MTS_SESSION. Any filtering criteria shall define - a single session only. In case multiple sessions match flowFilter the - request shall be rejected. If the flowFilter field is included, at least - one of its subfields shall be included. Any flowFilter subfield that is - not included shall be ignored in traffic flow filtering + description: "Traffic flow filtering criteria, applicable only if when requestType\ + \ is set as FLOW_SPECIFIC_MTS_SESSION. Any filtering criteria shall define\ + \ a single session only. In case multiple sessions match flowFilter the\ + \ request shall be rejected. If the flowFilter field is included, at least\ + \ one of its subfields shall be included. Any flowFilter subfield that\ + \ is not included shall be ignored in traffic flow filtering" items: $ref: '#/components/schemas/MtsSessionInfo_flowFilter' x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: Structure (inlined) mtsMode: type: integer - description: 'Numeric value (0 - 255) corresponding to a specific MTS mode - of the MTS session: 0 = low cost, i.e. using the unmetered access network - connection whenever it is available 1 = low latency, i.e. using the access - network connection with lower latency 2 = high throughput, i.e. using - the access network connection with higher throughput, or multiple access - network connection simultaneously 3 = redundancy, i.e. sending duplicated - (redundancy) packets over multiple access network connections for high-reliability - and low-latency applications 4 = QoS, i.e. performing MTS based on the - QoS requirement (qosD)' + description: "Numeric value (0 to 255) corresponding to a specific MTS mode\ + \ of the MTS session: 0 = low cost, i.e. using the unmetered access network\ + \ connection whenever it is available 1 = low latency, i.e. using the\ + \ access network connection with lower latency 2 = high throughput, i.e.\ + \ using the access network connection with higher throughput, or multiple\ + \ access network connection simultaneously 3 = redundancy, i.e. sending\ + \ duplicated (redundancy) packets over multiple access network connections\ + \ for high-reliability and low-latency applications 4 = QoS, i.e. performing\ + \ MTS based on the QoS requirement (qosD)" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 + trafficSplit: + type: array + description: Indicates the requested ratio between multiple access networks for the network aggregation\ + \ required for higher throughput. Indicates the requested ratio between multiple access networks for \ + \ the network aggregation required for higher throughput. This is based on the existing 3GPP ATSSS feature\ + \ specified in clause 5.32.8 of ETSI TS 123 501 [i.5]. + items: + $ref: '#/components/schemas/TrafficSplit' + trafficSwitch: + $ref: '#/components/schemas/TrafficSwitch' qosD: $ref: '#/components/schemas/MtsSessionInfo_qosD' requestType: type: integer - description: 'Numeric value (0 - 255) corresponding to specific type of - consumer as following: 0 = APPLICATION_SPECIFIC_MTS_SESSION 1 = FLOW_SPECIFIC_MTS_SESSION' + description: "Numeric value (0 to 255) corresponding to specific type of\ + \ consumer as following: 0 = APPLICATION_SPECIFIC_MTS_SESSION 1 = FLOW_SPECIFIC_MTS_SESSION" enum: - 0 - 1 @@ -446,9 +511,9 @@ components: $ref: '#/components/schemas/MtsSessionInfo_timeStamp' trafficDirection: type: string - description: 'The direction of the requested MTS session: 00 = Downlink - (towards the UE) 01 = Uplink (towards the application/session) 10 = Symmetrical - (see note) ' + description: "The direction of the requested MTS session: 00 = Downlink\ + \ (towards the UE) 01 = Uplink (towards the application/session) 10 =\ + \ Symmetrical (see note) " x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String example: @@ -514,7 +579,7 @@ components: x-etsi-mec-origin-type: Uint32 title: type: string - description: A short, human-readable summary of the problem type + description: "A short, human-readable summary of the problem type" x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String type: @@ -524,6 +589,47 @@ components: format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: URI + AppTerminationNotification: + required: + - _links + - maxGracefulTimeout + - notificationType + - operationAction + type: object + properties: + notificationType: + type: string + description: Shall be set to AppTerminationNotification. + operationAction: + $ref: '#/components/schemas/OperationActionType' + maxGracefulTimeout: + type: integer + description: Maximum timeout value in seconds for graceful termination or + graceful stop of an application instance. + format: uint32 + _links: + $ref: '#/components/schemas/AppTerminationNotification__links' + description: This type represents the information that the MEC platform notifies + the subscribed application instance about the corresponding application instance + termination/stop. + OperationActionType: + type: string + description: Operation that is being performed on the MEC application instance. + enum: + - STOPPING + - TERMINATING + LinkType: + required: + - href + type: object + properties: + href: + type: string + description: URI referring to a resource + format: uri + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: Uri + x-etsi-ref: 6.5.2 MtsCapabilityInfo_mtsAccessInfo: type: object properties: @@ -535,19 +641,21 @@ components: x-etsi-mec-origin-type: Uint32 accessType: type: integer - description: 'Numeric value (0-255) corresponding to specific type of access - network as following: 0 = Unknown 1 = Any IEEE802.11-based WLAN technology - 2 = Any 3GPP-based Cellular technology 3 = Any Fixed Access 11 = IEEE802.11 - a/b/g WLAN 12 = IEEE 802.11 a/b/g/n WLAN 13 = IEEE 802.11 a/b/g/n/ac WLAN - 14 = IEEE 802.11 a/b/g/n/ac/ax WLAN (Wi-Fi 6) 15 = IEEE 802.11 b/g/n WLAN - 31 = 3GPP GERAN/UTRA (2G/3G) 32 = 3GPP E-UTRA (4G/LTE) 33 = 3GPP NR (5G)' + description: "Numeric value (0 to 255) corresponding to specific type of access\ + \ network as following: 0 = Unknown 1 = Any IEEE802.11-based WLAN technology\ + \ 2 = Any 3GPP-based Cellular technology 3 = Any Fixed Access 11 = IEEE802.11\ + \ a/b/g WLAN 12 = IEEE 802.11 a/b/g/n WLAN 13 = IEEE 802.11 a/b/g/n/ac\ + \ WLAN 14 = IEEE 802.11 a/b/g/n/ac/ax WLAN (Wi-Fi 6) 15 = IEEE 802.11\ + \ b/g/n WLAN 31 = 3GPP GERAN/UTRA (2G/3G) 32 = 3GPP E-UTRA (4G/LTE) 33\ + \ = 3GPP NR (5G)" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 metered: type: integer - description: 'Numeric value (0-255) corresponding to the following: 0: the - connection is not metered (see note) 1: the connection is metered 2: unknown ' + description: "Numeric value (0 to 255) corresponding to the following: 0: the\ + \ connection is not metered (see note) 1: the connection is metered 2:\ + \ unknown " format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 @@ -563,15 +671,15 @@ components: properties: nanoSeconds: type: integer - description: Time in nanoseconds in Unix-time since January 1, 1970, 00:00:00 - UTC + description: "Time in nanoseconds in Unix-time since January 1, 1970, 00:00:00\ + \ UTC" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 seconds: type: integer - description: Time in seconds in Unix-time since January 1, 1970, 00:00:00 - UTC + description: "Time in seconds in Unix-time since January 1, 1970, 00:00:00\ + \ UTC" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 @@ -589,51 +697,54 @@ components: format: uint32 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 - dstIp: - description: >- - Destination address identity of session. The string for a IPv4 - address shall be formatted in the "dotted decimal" notation as - defined in IETF RFC 1166 [10]. The string for a IPv6 address shall - be formatted according to clause 4 of IETF RFC 5952 [11], with in - CIDR notation [12] used to provide the routing prefix. + dstAddress: type: string + description: "Destination address identity of session. The string for a\ + \ IPv4 address shall be formatted in the \"dotted decimal\" notation as\ + \ defined in IETF RFC 1166 [10]. The string for a IPv6 address shall be\ + \ formatted according to clause 4 of IETF RFC 5952 [11], with in CIDR\ + \ notation IETF RFC 4632 [12] used to provide the routing prefix." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String dstPort: + type: string description: Destination port identity of session - format: uint32 - type: integer x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: Uint32 + x-etsi-mec-origin-type: String flowlabel: type: integer - description: Flow Label in the IPv6 header, applicable only if the flow - is IPv6 + description: "Flow Label in the IPv6 header, applicable only if the flow\ + \ is IPv6" format: uint32 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 protocol: - type: integer + type: string description: Protocol number + x-etsi-mec-cardinality: 0..1 + x-etsi-mec-origin-type: String + maxSessions: + type: integer format: uint32 + description: It indicates the maximum number of sessions MTS service will\ + \ track for the given (sourceIp, dstIp etc.) provided by a service consumer.\ + \ This attribute shall not be present in the request, but may be present in the response. x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 - sourceIp: - description: >- - Source address identity of session. The string for a IPv4 address - shall be formatted in the "dotted decimal" notation as defined in - IETF RFC 1166 [10]. The string for a IPv6 address shall be formatted - according to clause 4 of IETF RFC 5952 [11], with in CIDR notation - [12] used to provide the routing prefix. + sourceAddress: type: string + description: "Source address identity of session. The string for a IPv4\ + \ address shall be formatted in the \"dotted decimal\" notation as defined\ + \ in IETF RFC 1166 [10]. The string for a IPv6 address shall be formatted\ + \ according to clause 4 of IETF RFC 5952 [11], with in CIDR notation IETF RFC 4632 [12]\ + \ used to provide the routing prefix." x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String sourcePort: + type: string description: Source port identity of session - format: uint32 - type: integer x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: Uint32 + x-etsi-mec-origin-type: String example: flowlabel: 1 protocol: 5 @@ -642,44 +753,75 @@ components: dstPort: 6 sourceIp: sourceIp dstIp: dstIp + TrafficSplit: + type: object + required: + - accessId + - splittingRatio + properties: + accessId: + type: integer + format: int32 + description: Unique identifier for the access network connection. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: Uint32 + splittingRatio: + type: string + description: Splitting ratio for the access network as per the accessId. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: String + TrafficSwitch: + type: object + description: Priority based access network connection switching for seamless handover as per the\ + \ application preference. This is based on the existing 3GPP ATSSS feature specified in clause\ + \ 5.32.8 of ETSI TS 123 501 [i.5]. + required: + - accessId + properties: + accessId: + type: integer + format: int32 + description: Unique identifier for the access network connection. + x-etsi-mec-cardinality: 1 + x-etsi-mec-origin-type: Uint32 MtsSessionInfo_qosD: type: object properties: maxJitter: type: integer - description: tolerable jitter in [10 nanoseconds] + description: "Tolerable jitter in [10 nanoseconds]" format: uint32 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 maxLatency: type: integer - description: tolerable (one-way) delay in [10 nanoseconds] + description: "Tolerable (one-way) delay in [10 nanoseconds]" format: uint32 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 maxLoss: type: integer - description: tolerable packet loss rate in [1/10^x] + description: "Tolerable packet loss rate in [1/10^x]" format: uint32 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 minTpt: type: integer - description: minimal throughput in [kbps] + description: "Minimal throughput in [kbps]" format: uint32 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 priority: type: integer - description: 'numeric value (0 - 255) corresponding to the traffic priority - 0: low; 1: medium; 2: high; 3: critical' + description: "numeric value (0 to 255) corresponding to the traffic priority\ + \ 0: low; 1: medium; 2: high; 3: critical" format: uint32 x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: Uint32 - description: QoS requirement description of the MTS session, applicable only - if mtsMode = 4 (QoS). If the qosD field is included, at least one of its subfields - shall be included. Any qosD subfield that is not included shall be ignored - in Multi-access Traffic Steering (MTS) + description: "QoS requirement description of the MTS session, applicable only\ + \ if mtsMode = 4 (QoS). If the qosD field is included, at least one of its\ + \ subfields shall be included. Any qosD subfield that is not included shall\ + \ be ignored in Multi-access Traffic Steering (MTS)" example: maxJitter: 7 maxLatency: 9 @@ -694,15 +836,15 @@ components: properties: nanoSeconds: type: integer - description: The nanoseconds part of the Time. Time is defined as Unix-time - since January 1, 1970, 00:00:00 UTC + description: "The nanoseconds part of the Time. Time is defined as Unix-time\ + \ since January 1, 1970, 00:00:00 UTC" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 seconds: type: integer - description: The seconds part of the Time. Time is defined as Unixtime since - January 1, 1970, 00:00:00 UTC + description: "The seconds part of the Time. Time is defined as Unixtime\ + \ since January 1, 1970, 00:00:00 UTC" format: uint32 x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: Uint32 @@ -711,35 +853,45 @@ components: example: seconds: 1 nanoSeconds: 1 + AppTerminationNotification__links: + required: + - subscription + type: object + properties: + subscription: + $ref: '#/components/schemas/LinkType' + confirmTermination: + $ref: '#/components/schemas/LinkType' + description: Object containing hyperlinks related to the resource. responses: "204": - description: Upon success, a response 204 No Content without any response body - is returned. + description: "Upon success, a response 204 No Content without any response body\ + \ is returned." "400": - description: 'Bad Request : used to indicate that incorrect parameters were - passed to the request.' + description: "Bad Request : used to indicate that incorrect parameters were\ + \ passed to the request." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: 'Forbidden : operation is not allowed given the current status - of the resource.' + description: "Forbidden : operation is not allowed given the current status\ + \ of the resource." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: 'Not Found : used when a client provided a URI that cannot be - mapped to a valid resource URI.' + description: "Not Found : used when a client provided a URI that cannot be\ + \ mapped to a valid resource URI." content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "412": - description: 'Precondition failed : used when a condition has failed during - conditional requests, e.g. when using ETags to avoid write conflicts when - using PUT' + description: "Precondition failed : used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts when\ + \ using PUT" content: application/problem+json: schema: -- GitLab From 5f994464ffac5410a224c002dcfacf73ae1d2831 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 12 Aug 2024 08:39:57 +0200 Subject: [PATCH 26/58] Add MEC 040 Federation skeletons --- config/.meepctl-repocfg.yaml | 49 ++++++++++++++++++++++++++++++++++++ config/api/fed-api.yaml | 2 +- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 8bde14e..cf535cb 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -68,6 +68,10 @@ repo: github: # enable GitHub OAuth enabled: true + # device authorization url + device-auth-url: https://github.com/login/device/code + # device polling url + device-poll-url: https://github.com/login/oauth/access_token # authorization url auth-url: https://github.com/login/device/code # polling url @@ -304,6 +308,7 @@ repo: # - meep-tc-engine # - meep-app-enablement # - meep-vis + - meep-federation # location of API specifications api: - name: 'AdvantEDGE Monitoring Engine REST API' @@ -418,6 +423,7 @@ repo: meep-app-enablement: charts/meep-app-enablement meep-virt-chart-templates: charts/meep-virt-chart-templates meep-vis: charts/meep-vis + meep-federation: charts/meep-federation # list of sandbox specific pods sandbox-pods: - meep-gis-engine @@ -433,6 +439,7 @@ repo: # - meep-tc-engine # - meep-app-enablement # - meep-vis + - meep-federation meep-webhook: # location of source code src: go-apps/meep-webhook @@ -931,6 +938,38 @@ repo: 'entrypoint.sh': go-apps/meep-vis/entrypoint.sh # location of grid map file 'grid_map.yaml': go-packages/meep-vis-traffic-mgr/grid_map.yaml + meep-federation: + # location of source code + src: go-apps/meep-federation + # location of binary + bin: bin/meep-federation + # location of deployment chart + chart: charts/meep-federation + # user supplied value file located @ .meep/user/values (use below file name) + chart-user-values: meep-federation.yaml + # extra build flags + build-flags: + - -mod=vendor + # enable meepctl build + build: true + # enable meepctl dockerize + dockerize: true + # enable meepctl deploy/delete + deploy: true + # supports code coverage measurement when built in codecov mode + codecov: true + # supports linting + lint: true + # location of API specifications + api: + - name: 'AdvantEDGE Federation Service REST API' + file: go-apps/meep-federation/api/swagger.yaml + # location of user supplied API specifications + user-api: + # resources available to docker container image + docker-data: + # location of entry script + 'entrypoint.sh': go-apps/meep-federation/entrypoint.sh #------------------------------ # Dependencies @@ -1232,6 +1271,11 @@ repo: src: go-packages/meep-rnis-client # supports linting lint: false + meep-federation-client: + # location of source code + src: go-packages/meep-federation-client + # supports linting + lint: false meep-sandbox-ctrl-client: # location of source code src: go-packages/meep-sandbox-ctrl-client @@ -1282,6 +1326,11 @@ repo: src: go-packages/meep-vis-client # supports linting lint: false + meep-federation-mgr: + # location of source code + src: go-packages/meep-federation-mgr + # supports linting + lint: false meep-vis-traffic-mgr: # location of source code src: go-packages/meep-vis-traffic-mgr diff --git a/config/api/fed-api.yaml b/config/api/fed-api.yaml index 8e83b33..3e9f10d 100644 --- a/config/api/fed-api.yaml +++ b/config/api/fed-api.yaml @@ -12,7 +12,7 @@ externalDocs: description: "ETSI GS MEC 040 Federation enablement API, v3.2.1" url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/040/03.02.01_60/gs_MEC040v030201p.pdf servers: -- url: https://localhost/sandboxname/sandboxname/fed_enablement/v1 +- url: https://localhost/sandboxname/fed_enablement/v1 tags: - name: systemInfo - name: subscription -- GitLab From 493f1b7d7391dcf1ae713a43a36c1357d86aa211 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 12 Aug 2024 14:01:57 +0200 Subject: [PATCH 27/58] Add new network scenario for MEC-040 --- networks/4g-5g-macro-v2x-fed.yaml | 4302 +++++++++++++++++++++++++++++ 1 file changed, 4302 insertions(+) create mode 100644 networks/4g-5g-macro-v2x-fed.yaml diff --git a/networks/4g-5g-macro-v2x-fed.yaml b/networks/4g-5g-macro-v2x-fed.yaml new file mode 100644 index 0000000..9747af2 --- /dev/null +++ b/networks/4g-5g-macro-v2x-fed.yaml @@ -0,0 +1,4302 @@ +version: 1.9.0 +name: 4g-5g-macro-v2x-fed +deployment: + netChar: + latency: 50 + latencyVariation: 10 + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + connectivity: + model: OPEN + d2d: + d2dMaxDistance: 100 + userMeta: + mec-sandbox: '{"defaultStaticUeCount": 1, "defaultLowVelocityUeCount": 1, "defaultHighVelocityUeCount": 1, "highVelocitySpeedThreshold": 10}' + network-info: '{"type": "local", "path":"4G-Macro-Network-Topology.png"}' + domains: + - + id: PUBLIC + name: PUBLIC + type: PUBLIC + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + zones: + - + id: PUBLIC-COMMON + name: PUBLIC-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + networkLocations: + - + id: PUBLIC-COMMON-DEFAULT + name: PUBLIC-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: f1c5f2fe-5fbb-48fa-a0df-6ad00e4eeb4c + name: sandbox-operator + type: OPERATOR-CELLULAR + netChar: + latency: 6 + latencyVariation: 2 + throughputDl: 1000 + throughputUl: 1000 + cellularDomainConfig: + mnc: '001' + mcc: '001' + defaultCellId: FFFFFFF + zones: + - + id: sandbox-operator-COMMON + name: sandbox-operator-COMMON + type: COMMON + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + networkLocations: + - + id: sandbox-operator-COMMON-DEFAULT + name: sandbox-operator-COMMON-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: 6fd7e9d1-3646-474d-880b-d4a21799d280 + name: zone01 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: blueviolet + networkLocations: + - + id: zone01-DEFAULT + name: zone01-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + physicalLocations: + - + id: 138c1c53-7f25-4c52-a025-3b607da5f97a + name: mep1 + type: EDGE + geoData: + location: + type: Point + coordinates: + - 7.421096 + - 43.73408 + connected: true + dataNetwork: {} + processes: + - + id: 62cc2936-af22-4946-b3e5-5b9143d7203f + name: mec011-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-app-enablement' + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: b8a203be-ac81-45a6-8d88-fdb1f8f5393b + name: mec012-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-rnis' + environment: 'MEEP_SCOPE_OF_LOCALITY=MEC_SYSTEM,MEEP_CONSUMED_LOCAL_ONLY=false' + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: 298b2c0c-7efa-45d3-8b47-8ab3c009b845 + name: mec013-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-loc-serv' + environment: 'MEEP_SCOPE_OF_LOCALITY=MEC_SYSTEM,MEEP_CONSUMED_LOCAL_ONLY=false' + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: f1e4d448-e277-496b-bf63-98391cfd20fb + name: mec015-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-tm' + environment: 'MEEP_SCOPE_OF_LOCALITY=MEC_SYSTEM,MEEP_CONSUMED_LOCAL_ONLY=false' + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: fb4d3c6a-197e-4e3f-96ae-ab4d5ac663a9 + name: mec016-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-dai' + environment: 'MEEP_SCOPE_OF_LOCALITY=MEC_SYSTEM,MEEP_CONSUMED_LOCAL_ONLY=false' + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: b8ae165a-a1e3-4d6c-86d9-52c59ad314b6 + name: mec028-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-wais' + environment: 'MEEP_SCOPE_OF_LOCALITY=MEC_SYSTEM,MEEP_CONSUMED_LOCAL_ONLY=false' + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: 5015e45f-be53-4e28-8f47-c107fd1dea8c + name: mec030-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-vis' + environment: 'MEEP_SCOPE_OF_LOCALITY=MEC_SYSTEM,MEEP_CONSUMED_LOCAL_ONLY=false,MEEP_PREDICT_MODEL_SUPPORTED=true,MEEP_POA_LIST="5g-small-cell-1;5g-small-cell-2;5g-small-cell-3;5g-small-cell-4"' + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: a88756b5-f816-4fd0-9977-936d1382b6d8 + name: mec040-1 + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-federation' + environment: 'MEEP_SCOPE_OF_LOCALITY=MEC_SYSTEM,MEEP_CONSUMED_LOCAL_ONLY=false' + netChar: + throughputDl: 1000 + throughputUl: 1000 + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + - + id: 3480e529-3fc1-44b8-a892-42bbbfa4018f + name: 4g-macro-cell-1 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '1010101' + geoData: + location: + type: Point + coordinates: + - 7.419344 + - 43.72764 + radius: 400 + physicalLocations: + - + id: 3331ee44-2236-1111-0020-5a3c2bde0eaa + name: 10.10.0.4 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.420433 + - 43.729942 + path: + type: LineString + coordinates: + - + - 7.420433 + - 43.729942 + - + - 7.420659 + - 43.73036 + - + - 7.420621 + - 43.731045 + - + - 7.420922 + - 43.73129 + - + - 7.421345 + - 43.731373 + - + - 7.42135 + - 43.73168 + - + - 7.421148 + - 43.73173 + - + - 7.420616 + - 43.731964 + - + - 7.419779 + - 43.732197 + - + - 7.419111 + - 43.732353 + - + - 7.418931 + - 43.732315 + - + - 7.418345 + - 43.731964 + - + - 7.418319 + - 43.73186 + - + - 7.418024 + - 43.73179 + - + - 7.41796 + - 43.731728 + - + - 7.417729 + - 43.731743 + - + - 7.417463 + - 43.731632 + - + - 7.417507 + - 43.73148 + - + - 7.417428 + - 43.731407 + - + - 7.417343 + - 43.731396 + - + - 7.417334 + - 43.731133 + - + - 7.417317 + - 43.73053 + - + - 7.417164 + - 43.7304 + - + - 7.417164 + - 43.72998 + - + - 7.417319 + - 43.729916 + - + - 7.419065 + - 43.730103 + eopMode: REVERSE + velocity: 9 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-walk + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A0A0004 + - + id: 1e2600f4-4861-43d6-abcb-07f4481a124c + name: 10.10.0.3 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.423684 + - 43.727867 + path: + type: LineString + coordinates: + - + - 7.423684 + - 43.727867 + - + - 7.422571 + - 43.727325 + - + - 7.422421 + - 43.727333 + - + - 7.42196 + - 43.727123 + - + - 7.421828 + - 43.72711 + - + - 7.420988 + - 43.726707 + - + - 7.420757 + - 43.72654 + - + - 7.420393 + - 43.72653 + - + - 7.420207 + - 43.726746 + - + - 7.419985 + - 43.72686 + - + - 7.41988 + - 43.72701 + - + - 7.419869 + - 43.727287 + - + - 7.419807 + - 43.727474 + - + - 7.419671 + - 43.727585 + - + - 7.419502 + - 43.727608 + - + - 7.419402 + - 43.728645 + - + - 7.421238 + - 43.72874 + - + - 7.421412 + - 43.728493 + - + - 7.421532 + - 43.728237 + - + - 7.421697 + - 43.72798 + - + - 7.421928 + - 43.727783 + - + - 7.422381 + - 43.727524 + - + - 7.422507 + - 43.72749 + - + - 7.422922 + - 43.72768 + - + - 7.422894 + - 43.727715 + - + - 7.423666 + - 43.72804 + - + - 7.423763 + - 43.72794 + - + - 7.4237 + - 43.727905 + - + - 7.423684 + - 43.727867 + eopMode: LOOP + velocity: 9 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-walk + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A0A0003 + - + id: 8c2599e8-dd88-4ff2-9cf4-6fc54663c152 + name: 4g-macro-cell-2 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '2020202' + geoData: + location: + type: Point + coordinates: + - 7.413819 + - 43.729538 + radius: 400 + physicalLocations: + - + id: c52208b3-93bb-4255-9b34-52432acc4398 + name: 10.100.0.1 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.412295 + - 43.728676 + path: + type: LineString + coordinates: + - + - 7.412295 + - 43.728676 + - + - 7.412273 + - 43.728664 + - + - 7.412281 + - 43.728645 + - + - 7.412294 + - 43.72861 + - + - 7.412353 + - 43.728577 + - + - 7.412433 + - 43.728584 + - + - 7.412494 + - 43.72862 + - + - 7.412491 + - 43.72867 + - + - 7.412466 + - 43.728714 + - + - 7.412627 + - 43.728798 + - + - 7.412708 + - 43.728863 + - + - 7.412821 + - 43.729042 + - + - 7.413009 + - 43.729298 + - + - 7.413331 + - 43.72953 + - + - 7.414082 + - 43.729942 + - + - 7.414709 + - 43.730297 + - + - 7.415187 + - 43.730553 + - + - 7.415568 + - 43.73077 + - + - 7.416118 + - 43.73108 + - + - 7.416652 + - 43.73135 + - + - 7.416979 + - 43.731503 + - + - 7.417131 + - 43.73154 + - + - 7.41718 + - 43.731457 + - + - 7.417308 + - 43.73144 + - + - 7.417392 + - 43.731476 + - + - 7.417432 + - 43.731533 + - + - 7.417426 + - 43.731598 + - + - 7.417365 + - 43.73165 + - + - 7.417268 + - 43.731663 + - + - 7.417177 + - 43.73164 + - + - 7.417037 + - 43.731712 + - + - 7.416912 + - 43.73183 + - + - 7.416855 + - 43.731888 + - + - 7.41681 + - 43.731964 + - + - 7.41681 + - 43.732018 + - + - 7.416761 + - 43.732048 + - + - 7.4167 + - 43.732037 + - + - 7.416646 + - 43.731995 + - + - 7.416437 + - 43.73177 + - + - 7.416278 + - 43.731544 + - + - 7.416238 + - 43.731464 + - + - 7.416225 + - 43.731384 + - + - 7.416228 + - 43.73122 + - + - 7.416206 + - 43.731102 + - + - 7.416128 + - 43.73104 + - + - 7.416005 + - 43.73094 + - + - 7.415892 + - 43.73085 + - + - 7.415442 + - 43.730564 + - + - 7.414985 + - 43.73029 + - + - 7.413749 + - 43.7296 + - + - 7.413719 + - 43.729523 + - + - 7.414267 + - 43.72908 + - + - 7.414825 + - 43.728683 + - + - 7.414983 + - 43.728634 + - + - 7.415184 + - 43.728607 + - + - 7.415248 + - 43.728603 + - + - 7.41531 + - 43.72861 + - + - 7.415366 + - 43.72868 + - + - 7.415329 + - 43.728752 + - + - 7.415332 + - 43.72882 + - + - 7.41538 + - 43.728905 + - + - 7.415645 + - 43.729088 + - + - 7.416165 + - 43.729477 + - + - 7.416268 + - 43.729515 + - + - 7.416372 + - 43.72958 + - + - 7.416673 + - 43.7298 + - + - 7.416808 + - 43.729828 + - + - 7.416867 + - 43.72982 + - + - 7.417084 + - 43.72983 + - + - 7.417418 + - 43.72988 + - + - 7.417764 + - 43.729916 + - + - 7.418454 + - 43.72999 + - + - 7.418545 + - 43.729046 + - + - 7.418624 + - 43.729004 + - + - 7.419099 + - 43.72902 + - + - 7.419173 + - 43.728962 + - + - 7.419217 + - 43.72858 + - + - 7.420207 + - 43.72863 + - + - 7.421203 + - 43.728664 + - + - 7.421265 + - 43.72848 + - + - 7.421318 + - 43.72833 + - + - 7.421387 + - 43.72821 + - + - 7.421448 + - 43.72811 + - + - 7.421565 + - 43.727966 + - + - 7.42162 + - 43.7279 + - + - 7.42168 + - 43.72785 + - + - 7.421951 + - 43.727634 + - + - 7.422287 + - 43.72743 + - + - 7.422104 + - 43.72733 + - + - 7.421898 + - 43.72723 + - + - 7.421297 + - 43.726948 + - + - 7.42101 + - 43.726795 + - + - 7.42075 + - 43.72662 + - + - 7.420669 + - 43.726624 + - + - 7.420599 + - 43.726635 + - + - 7.420543 + - 43.72666 + - + - 7.420205 + - 43.726803 + - + - 7.420039 + - 43.726883 + - + - 7.41995 + - 43.72704 + - + - 7.419926 + - 43.727287 + - + - 7.419913 + - 43.727413 + - + - 7.419859 + - 43.72752 + - + - 7.419728 + - 43.727615 + - + - 7.419527 + - 43.72767 + - + - 7.419304 + - 43.72768 + - + - 7.418912 + - 43.727684 + - + - 7.418875 + - 43.727726 + - + - 7.418805 + - 43.727734 + - + - 7.418751 + - 43.727886 + - + - 7.41866 + - 43.728058 + - + - 7.418553 + - 43.728134 + - + - 7.418459 + - 43.72819 + - + - 7.418341 + - 43.728245 + - + - 7.418135 + - 43.728283 + - + - 7.418035 + - 43.72831 + - + - 7.417955 + - 43.728355 + - + - 7.417933 + - 43.728546 + - + - 7.417923 + - 43.72878 + - + - 7.417864 + - 43.72901 + - + - 7.41777 + - 43.729256 + - + - 7.417654 + - 43.729446 + - + - 7.417483 + - 43.729645 + - + - 7.417416 + - 43.72971 + - + - 7.417233 + - 43.72983 + - + - 7.417139 + - 43.729893 + - + - 7.417102 + - 43.729935 + - + - 7.41707 + - 43.72999 + - + - 7.417072 + - 43.730053 + - + - 7.417314 + - 43.730247 + - + - 7.417579 + - 43.730446 + - + - 7.418376 + - 43.73103 + - + - 7.41858 + - 43.73113 + - + - 7.419038 + - 43.73124 + - + - 7.419392 + - 43.73131 + - + - 7.419736 + - 43.73141 + - + - 7.420988 + - 43.73178 + - + - 7.421616 + - 43.731987 + - + - 7.421924 + - 43.732105 + - + - 7.422169 + - 43.73223 + - + - 7.422276 + - 43.732334 + - + - 7.422316 + - 43.73246 + - + - 7.422297 + - 43.732597 + - + - 7.42222 + - 43.732723 + - + - 7.422096 + - 43.73284 + - + - 7.422002 + - 43.732975 + - + - 7.421962 + - 43.733047 + - + - 7.421949 + - 43.733135 + - + - 7.421696 + - 43.733627 + - + - 7.421522 + - 43.734016 + - + - 7.421377 + - 43.73445 + - + - 7.421289 + - 43.73488 + - + - 7.421232 + - 43.735355 + - + - 7.421211 + - 43.73588 + - + - 7.421291 + - 43.73624 + - + - 7.421447 + - 43.736584 + - + - 7.421576 + - 43.73678 + - + - 7.421629 + - 43.73683 + - + - 7.421755 + - 43.736908 + - + - 7.422032 + - 43.737015 + - + - 7.42237 + - 43.737045 + - + - 7.422756 + - 43.73709 + - + - 7.423142 + - 43.737164 + - + - 7.423915 + - 43.737328 + - + - 7.424164 + - 43.737377 + - + - 7.424414 + - 43.737408 + - + - 7.424918 + - 43.73745 + - + - 7.425942 + - 43.73778 + - + - 7.426543 + - 43.737877 + - + - 7.426795 + - 43.737984 + - + - 7.426946 + - 43.738132 + - + - 7.426972 + - 43.738243 + - + - 7.426924 + - 43.738384 + - + - 7.426747 + - 43.738514 + - + - 7.426495 + - 43.738655 + - + - 7.426119 + - 43.738857 + - + - 7.425932 + - 43.738956 + - + - 7.42583 + - 43.739017 + - + - 7.425776 + - 43.739098 + - + - 7.425771 + - 43.739197 + - + - 7.425814 + - 43.73932 + - + - 7.425771 + - 43.73942 + - + - 7.425685 + - 43.739525 + - + - 7.425154 + - 43.73971 + - + - 7.425562 + - 43.740387 + - + - 7.425765 + - 43.7407 + - + - 7.425883 + - 43.740875 + - + - 7.426023 + - 43.741028 + - + - 7.426329 + - 43.741234 + - + - 7.426538 + - 43.74138 + - + - 7.426736 + - 43.741535 + - + - 7.426822 + - 43.74154 + - + - 7.426908 + - 43.74159 + - + - 7.426895 + - 43.741665 + - + - 7.427034 + - 43.74174 + - + - 7.427466 + - 43.742035 + - + - 7.427699 + - 43.742188 + - + - 7.427799 + - 43.742268 + - + - 7.427908 + - 43.74236 + - + - 7.428187 + - 43.7429 + - + - 7.428544 + - 43.743557 + - + - 7.42892 + - 43.744236 + - + - 7.429225 + - 43.74491 + - + - 7.429504 + - 43.74551 + - + - 7.429751 + - 43.74569 + - + - 7.429939 + - 43.745804 + - + - 7.430121 + - 43.74594 + - + - 7.430202 + - 43.746082 + - + - 7.430239 + - 43.746162 + - + - 7.43062 + - 43.746452 + - + - 7.431017 + - 43.74667 + - + - 7.431371 + - 43.746925 + - + - 7.431682 + - 43.747177 + - + - 7.431763 + - 43.7473 + - + - 7.431763 + - 43.747467 + - + - 7.431731 + - 43.747578 + - + - 7.431822 + - 43.747734 + - + - 7.432031 + - 43.747807 + - + - 7.432246 + - 43.747856 + - + - 7.432525 + - 43.747852 + - + - 7.432809 + - 43.747955 + - + - 7.433152 + - 43.748158 + - + - 7.43341 + - 43.748363 + - + - 7.43401 + - 43.748726 + - + - 7.434322 + - 43.748905 + - + - 7.434671 + - 43.749058 + - + - 7.435019 + - 43.74907 + - + - 7.435373 + - 43.749073 + - + - 7.435818 + - 43.74906 + - + - 7.436028 + - 43.749104 + - + - 7.43621 + - 43.749184 + - + - 7.436376 + - 43.749287 + - + - 7.43651 + - 43.749416 + - + - 7.43709 + - 43.749954 + - + - 7.437347 + - 43.750195 + - + - 7.437589 + - 43.75045 + - + - 7.437841 + - 43.75071 + - + - 7.43812 + - 43.751137 + - + - 7.438431 + - 43.751614 + - + - 7.438881 + - 43.751606 + - + - 7.439327 + - 43.75162 + - + - 7.439826 + - 43.751553 + - + - 7.44004 + - 43.751488 + - + - 7.440137 + - 43.751392 + - + - 7.440062 + - 43.751163 + - + - 7.439842 + - 43.75103 + - + - 7.43952 + - 43.750824 + - + - 7.439203 + - 43.750637 + - + - 7.439219 + - 43.750423 + - + - 7.439364 + - 43.750286 + - + - 7.439616 + - 43.75027 + - + - 7.440062 + - 43.750523 + - + - 7.440443 + - 43.750797 + - + - 7.440115 + - 43.750893 + - + - 7.439836 + - 43.75065 + - + - 7.439289 + - 43.75024 + - + - 7.438694 + - 43.749947 + - + - 7.43732 + - 43.749363 + - + - 7.435936 + - 43.74877 + - + - 7.435287 + - 43.74844 + - + - 7.433453 + - 43.747387 + - + - 7.432712 + - 43.74694 + - + - 7.431956 + - 43.746502 + - + - 7.431586 + - 43.74628 + - + - 7.431216 + - 43.746056 + - + - 7.430974 + - 43.745815 + - + - 7.430792 + - 43.7456 + - + - 7.430679 + - 43.745537 + - + - 7.430668 + - 43.74546 + - + - 7.430674 + - 43.745377 + - + - 7.43069 + - 43.74523 + - + - 7.43062 + - 43.745117 + - + - 7.43041 + - 43.744785 + - + - 7.430306 + - 43.744625 + - + - 7.430225 + - 43.74446 + - + - 7.430192 + - 43.744396 + - + - 7.430144 + - 43.74434 + - + - 7.429972 + - 43.744175 + - + - 7.429881 + - 43.743988 + - + - 7.429728 + - 43.743587 + - + - 7.429689 + - 43.743484 + - + - 7.429671 + - 43.743435 + - + - 7.429656 + - 43.743385 + - + - 7.429612 + - 43.743202 + - + - 7.429592 + - 43.743034 + - + - 7.429584 + - 43.742874 + - + - 7.429596 + - 43.742657 + - + - 7.429612 + - 43.742485 + - + - 7.429639 + - 43.74218 + - + - 7.429783 + - 43.741016 + - + - 7.429848 + - 43.740414 + - + - 7.429872 + - 43.740257 + - + - 7.429858 + - 43.740124 + - + - 7.429791 + - 43.739834 + - + - 7.42971 + - 43.739548 + - + - 7.429573 + - 43.73925 + - + - 7.429385 + - 43.73896 + - + - 7.42915 + - 43.738686 + - + - 7.429027 + - 43.738552 + - + - 7.428953 + - 43.738483 + - + - 7.428917 + - 43.73845 + - + - 7.428875 + - 43.738422 + - + - 7.428521 + - 43.738182 + - + - 7.428061 + - 43.73796 + - + - 7.427626 + - 43.737766 + - + - 7.427324 + - 43.737656 + - + - 7.427005 + - 43.737576 + - + - 7.426667 + - 43.737507 + - + - 7.426342 + - 43.737473 + - + - 7.42602 + - 43.737442 + - + - 7.42571 + - 43.737434 + - + - 7.425395 + - 43.737434 + - + - 7.42384 + - 43.73755 + - + - 7.423571 + - 43.73761 + - + - 7.423247 + - 43.737644 + - + - 7.42289 + - 43.737667 + - + - 7.422737 + - 43.737656 + - + - 7.422659 + - 43.737644 + - + - 7.42259 + - 43.737625 + - + - 7.422582 + - 43.7376 + - + - 7.422584 + - 43.737576 + - + - 7.422598 + - 43.73753 + - + - 7.422646 + - 43.7375 + - + - 7.422814 + - 43.737434 + - + - 7.423523 + - 43.737408 + - + - 7.423972 + - 43.737442 + - + - 7.424034 + - 43.73743 + - + - 7.424064 + - 43.73741 + - + - 7.424055 + - 43.737385 + - + - 7.424038 + - 43.737366 + - + - 7.423644 + - 43.73728 + - + - 7.423225 + - 43.73719 + - + - 7.422795 + - 43.73711 + - + - 7.422332 + - 43.737053 + - + - 7.422099 + - 43.73703 + - + - 7.421981 + - 43.73701 + - + - 7.421785 + - 43.737007 + - + - 7.421583 + - 43.736977 + - + - 7.421478 + - 43.736946 + - + - 7.421381 + - 43.7369 + - + - 7.421202 + - 43.7368 + - + - 7.421065 + - 43.736702 + - + - 7.421003 + - 43.73664 + - + - 7.420967 + - 43.736614 + - + - 7.420598 + - 43.736317 + - + - 7.420181 + - 43.73597 + - + - 7.420098 + - 43.7359 + - + - 7.420028 + - 43.735836 + - + - 7.419874 + - 43.735687 + - + - 7.419729 + - 43.73555 + - + - 7.419451 + - 43.735283 + - + - 7.419311 + - 43.735146 + - + - 7.419177 + - 43.735004 + - + - 7.418924 + - 43.73472 + - + - 7.418668 + - 43.734436 + - + - 7.418515 + - 43.73424 + - + - 7.41849 + - 43.734142 + - + - 7.41851 + - 43.73403 + - + - 7.418537 + - 43.733932 + - + - 7.418588 + - 43.733727 + - + - 7.418687 + - 43.73334 + - + - 7.418813 + - 43.732906 + - + - 7.418915 + - 43.73265 + - + - 7.418904 + - 43.732555 + - + - 7.418859 + - 43.732525 + - + - 7.418795 + - 43.73252 + - + - 7.418462 + - 43.732613 + - + - 7.418294 + - 43.73266 + - + - 7.418215 + - 43.73269 + - + - 7.41814 + - 43.73272 + - + - 7.417854 + - 43.732807 + - + - 7.41764 + - 43.732853 + - + - 7.417487 + - 43.732895 + - + - 7.417425 + - 43.732925 + - + - 7.417377 + - 43.732986 + - + - 7.417373 + - 43.733036 + - + - 7.4174 + - 43.7331 + - + - 7.417593 + - 43.733456 + - + - 7.417621 + - 43.733547 + - + - 7.417609 + - 43.733665 + - + - 7.417566 + - 43.733784 + - + - 7.417477 + - 43.733948 + - + - 7.417422 + - 43.73416 + - + - 7.417394 + - 43.7342 + - + - 7.417331 + - 43.734238 + - + - 7.417137 + - 43.73429 + - + - 7.417091 + - 43.734406 + - + - 7.417072 + - 43.73461 + - + - 7.41707 + - 43.734833 + - + - 7.417106 + - 43.735027 + - + - 7.417174 + - 43.735165 + - + - 7.417213 + - 43.735237 + - + - 7.417265 + - 43.735313 + - + - 7.417349 + - 43.735413 + - + - 7.417468 + - 43.735542 + - + - 7.417709 + - 43.735783 + - + - 7.417825 + - 43.735874 + - + - 7.417894 + - 43.735916 + - + - 7.417971 + - 43.735947 + - + - 7.418423 + - 43.736076 + - + - 7.418604 + - 43.736122 + - + - 7.418683 + - 43.736156 + - + - 7.418759 + - 43.7362 + - + - 7.419186 + - 43.736515 + - + - 7.419429 + - 43.736725 + - + - 7.419634 + - 43.736874 + - + - 7.41982 + - 43.737015 + - + - 7.419993 + - 43.737167 + - + - 7.420052 + - 43.73722 + - + - 7.420099 + - 43.737286 + - + - 7.42013 + - 43.737335 + - + - 7.420121 + - 43.737442 + - + - 7.420076 + - 43.73754 + - + - 7.420024 + - 43.73758 + - + - 7.419942 + - 43.737614 + - + - 7.419759 + - 43.737682 + - + - 7.419337 + - 43.737827 + - + - 7.419228 + - 43.7379 + - + - 7.419127 + - 43.737995 + - + - 7.419092 + - 43.738087 + - + - 7.419126 + - 43.738163 + - + - 7.419173 + - 43.738186 + - + - 7.419261 + - 43.73819 + - + - 7.419348 + - 43.738174 + - + - 7.419405 + - 43.73811 + - + - 7.419454 + - 43.737915 + - + - 7.419511 + - 43.737743 + - + - 7.419544 + - 43.737705 + - + - 7.419611 + - 43.737644 + - + - 7.419867 + - 43.73755 + - + - 7.419964 + - 43.737514 + - + - 7.420028 + - 43.73747 + - + - 7.420036 + - 43.737423 + - + - 7.420034 + - 43.73738 + - + - 7.420013 + - 43.737335 + - + - 7.41998 + - 43.737293 + - + - 7.419899 + - 43.73722 + - + - 7.419673 + - 43.73708 + - + - 7.419535 + - 43.73704 + - + - 7.419489 + - 43.737026 + - + - 7.419434 + - 43.73703 + - + - 7.419327 + - 43.737045 + - + - 7.41915 + - 43.73712 + - + - 7.419123 + - 43.737137 + - + - 7.41913 + - 43.73716 + - + - 7.41912 + - 43.73719 + - + - 7.419033 + - 43.73725 + - + - 7.41893 + - 43.73732 + - + - 7.418659 + - 43.73749 + - + - 7.418499 + - 43.73756 + - + - 7.418411 + - 43.737583 + - + - 7.41831 + - 43.7376 + - + - 7.418235 + - 43.73759 + - + - 7.418163 + - 43.73757 + - + - 7.418037 + - 43.737507 + - + - 7.417955 + - 43.73744 + - + - 7.417869 + - 43.73738 + - + - 7.417664 + - 43.737312 + - + - 7.417506 + - 43.737274 + - + - 7.417401 + - 43.73726 + - + - 7.417366 + - 43.737236 + - + - 7.417346 + - 43.737206 + - + - 7.417345 + - 43.73717 + - + - 7.417311 + - 43.737103 + - + - 7.417304 + - 43.737064 + - + - 7.417295 + - 43.737045 + - + - 7.41729 + - 43.737022 + - + - 7.417276 + - 43.736973 + - + - 7.417247 + - 43.736935 + - + - 7.417186 + - 43.736893 + - + - 7.416992 + - 43.73685 + - + - 7.416886 + - 43.73682 + - + - 7.416842 + - 43.736797 + - + - 7.41681 + - 43.73677 + - + - 7.416771 + - 43.73672 + - + - 7.416749 + - 43.736668 + - + - 7.416704 + - 43.736313 + - + - 7.416675 + - 43.736084 + - + - 7.416665 + - 43.735966 + - + - 7.416665 + - 43.735855 + - + - 7.416615 + - 43.73581 + - + - 7.416623 + - 43.73574 + - + - 7.416591 + - 43.73564 + - + - 7.416561 + - 43.735546 + - + - 7.416504 + - 43.735416 + - + - 7.41637 + - 43.73514 + - + - 7.41632 + - 43.734993 + - + - 7.416289 + - 43.73486 + - + - 7.416272 + - 43.73474 + - + - 7.416262 + - 43.73462 + - + - 7.416245 + - 43.734394 + - + - 7.416225 + - 43.734295 + - + - 7.416201 + - 43.734203 + - + - 7.416174 + - 43.734142 + - + - 7.416138 + - 43.73409 + - + - 7.416054 + - 43.733955 + - + - 7.41599 + - 43.733894 + - + - 7.415801 + - 43.733715 + - + - 7.415393 + - 43.733383 + - + - 7.415356 + - 43.733337 + - + - 7.415299 + - 43.73332 + - + - 7.415204 + - 43.733276 + - + - 7.41514 + - 43.73322 + - + - 7.415098 + - 43.733154 + - + - 7.415077 + - 43.733097 + - + - 7.414878 + - 43.732937 + - + - 7.414619 + - 43.73273 + - + - 7.414414 + - 43.73253 + - + - 7.414343 + - 43.73237 + - + - 7.4143 + - 43.73213 + - + - 7.414363 + - 43.731937 + - + - 7.414526 + - 43.731796 + - + - 7.414589 + - 43.73177 + - + - 7.414902 + - 43.73153 + - + - 7.415022 + - 43.73144 + - + - 7.415058 + - 43.73137 + - + - 7.415065 + - 43.731266 + - + - 7.415031 + - 43.731213 + - + - 7.414972 + - 43.73117 + - + - 7.414802 + - 43.731125 + - + - 7.414583 + - 43.7311 + - + - 7.414045 + - 43.731014 + - + - 7.413182 + - 43.730873 + - + - 7.413132 + - 43.730865 + - + - 7.413081 + - 43.730846 + - + - 7.412977 + - 43.73082 + - + - 7.412864 + - 43.73075 + - + - 7.412629 + - 43.730595 + - + - 7.41271 + - 43.730377 + - + - 7.412778 + - 43.72999 + - + - 7.412793 + - 43.729607 + - + - 7.412826 + - 43.72954 + - + - 7.412839 + - 43.72948 + - + - 7.412739 + - 43.729347 + - + - 7.412632 + - 43.729225 + - + - 7.412401 + - 43.728916 + - + - 7.412397 + - 43.72874 + - + - 7.412365 + - 43.728737 + - + - 7.412332 + - 43.72873 + - + - 7.412307 + - 43.72871 + - + - 7.412295 + - 43.728676 + eopMode: LOOP + velocity: 20 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-car + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A640001 + - + id: f32f0c05-4491-4a93-be0c-19420d4407f0 + name: 4g-macro-cell-3 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '3030303' + geoData: + location: + type: Point + coordinates: + - 7.416715 + - 43.733616 + radius: 400 + physicalLocations: + - + id: 0ca4bfcc-7346-4f57-9c85-bb92642ec37e + name: 10.1.0.2 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.4187 + - 43.732403 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-ios-videocam + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A010002 + - + id: 37be6821-a5f3-4af9-af0a-ceff4c0f66be + name: 5g-small-cell-1 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '101010101' + geoData: + location: + type: Point + coordinates: + - 7.415385 + - 43.730846 + radius: 100 + - + id: ab60918a-acd8-4f4e-9693-d2fbffae9b72 + name: 5g-small-cell-2 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '202020202' + geoData: + location: + type: Point + coordinates: + - 7.416962 + - 43.731453 + radius: 100 + - + id: de2d952d-11b1-4294-8a67-6d994f1a5f37 + name: 5g-small-cell-3 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '303030303' + geoData: + location: + type: Point + coordinates: + - 7.417023 + - 43.733227 + radius: 100 + - + id: 9bd631b3-44f5-4f92-ad1a-d50c9c3e869d + name: 5g-small-cell-4 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '04040404' + geoData: + location: + type: Point + coordinates: + - 7.417173 + - 43.72764 + radius: 100 + - + id: 4c3c9568-6408-4900-9d97-4556f6d805db + name: zone02 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: darkred + networkLocations: + - + id: zone02-DEFAULT + name: zone02-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: 78327873-c828-47da-8a5b-3c74d251dbbc + name: 4g-macro-cell-4 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '4040404' + geoData: + location: + type: Point + coordinates: + - 7.423547 + - 43.731724 + radius: 400 + physicalLocations: + - + id: 67a40b8b-5777-4e96-a896-8622af4a741f + name: 10.100.0.3 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.427423 + - 43.731323 + path: + type: LineString + coordinates: + - + - 7.427423 + - 43.731323 + - + - 7.427463 + - 43.73143 + - + - 7.427455 + - 43.731537 + - + - 7.427423 + - 43.731598 + - + - 7.427439 + - 43.731667 + - + - 7.427479 + - 43.731766 + - + - 7.427951 + - 43.73259 + - + - 7.427989 + - 43.732677 + - + - 7.427962 + - 43.73281 + - + - 7.427852 + - 43.732925 + - + - 7.427655 + - 43.732994 + - + - 7.427556 + - 43.733 + - + - 7.425453 + - 43.73256 + - + - 7.42436 + - 43.7323 + - + - 7.424033 + - 43.732254 + - + - 7.423397 + - 43.73226 + - + - 7.422675 + - 43.73218 + - + - 7.422588 + - 43.7322 + - + - 7.42249 + - 43.732243 + - + - 7.422382 + - 43.732323 + - + - 7.422415 + - 43.73246 + - + - 7.422351 + - 43.73269 + - + - 7.422257 + - 43.73279 + - + - 7.4221 + - 43.73293 + - + - 7.421912 + - 43.733208 + - + - 7.421604 + - 43.733833 + - + - 7.421522 + - 43.734016 + - + - 7.421377 + - 43.73445 + - + - 7.421289 + - 43.73488 + - + - 7.421232 + - 43.735355 + - + - 7.421211 + - 43.73588 + - + - 7.421291 + - 43.73624 + - + - 7.421447 + - 43.736584 + - + - 7.421576 + - 43.73678 + - + - 7.4216 + - 43.7368 + - + - 7.421723 + - 43.73684 + - + - 7.424054 + - 43.73709 + - + - 7.424611 + - 43.737144 + - + - 7.424942 + - 43.73719 + - + - 7.425462 + - 43.737217 + - + - 7.426063 + - 43.737286 + - + - 7.426653 + - 43.737366 + - + - 7.427215 + - 43.73749 + - + - 7.427498 + - 43.737583 + - + - 7.427762 + - 43.73765 + - + - 7.42799 + - 43.737732 + - + - 7.428867 + - 43.738125 + - + - 7.429136 + - 43.73831 + - + - 7.429626 + - 43.738724 + - + - 7.429853 + - 43.73897 + - + - 7.430023 + - 43.739243 + - + - 7.430125 + - 43.7395 + - + - 7.430301 + - 43.740196 + - + - 7.430422 + - 43.741196 + - + - 7.430411 + - 43.741318 + - + - 7.430493 + - 43.741344 + - + - 7.430568 + - 43.741417 + - + - 7.430773 + - 43.74177 + eopMode: REVERSE + velocity: 20 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-car + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A640003 + - + id: ca3b5b42-0e99-4553-9d19-4696cd8fe469 + name: 4g-macro-cell-5 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '5050505' + geoData: + location: + type: Point + coordinates: + - 7.429257 + - 43.73411 + radius: 400 + physicalLocations: + - + id: c18e3f93-79c4-427d-af91-81996adab3e7 + name: 10.1.0.3 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.426565 + - 43.73298 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-ios-videocam + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A010003 + - + id: 1d2683f4-086e-47d6-abbb-07fa481a25fb + name: 10.10.0.1 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.43166 + - 43.736156 + path: + type: LineString + coordinates: + - + - 7.43166 + - 43.736156 + - + - 7.431723 + - 43.736115 + - + - 7.431162 + - 43.735607 + - + - 7.430685 + - 43.73518 + - + - 7.43043 + - 43.73532 + - + - 7.429067 + - 43.734108 + - + - 7.428863 + - 43.734184 + - + - 7.428388 + - 43.734116 + - + - 7.427817 + - 43.73446 + - + - 7.427689 + - 43.734917 + - + - 7.427581 + - 43.73499 + - + - 7.427308 + - 43.734955 + - + - 7.42723 + - 43.734844 + - + - 7.427281 + - 43.734646 + - + - 7.427411 + - 43.734657 + - + - 7.427709 + - 43.73362 + - + - 7.424581 + - 43.732964 + - + - 7.424312 + - 43.73363 + - + - 7.424512 + - 43.73368 + - + - 7.424534 + - 43.733707 + - + - 7.424534 + - 43.73373 + - + - 7.424477 + - 43.733753 + - + - 7.42423 + - 43.73371 + - + - 7.424029 + - 43.733665 + - + - 7.423999 + - 43.733624 + - + - 7.424058 + - 43.73358 + - + - 7.424246 + - 43.733624 + - + - 7.424522 + - 43.732952 + - + - 7.423748 + - 43.73279 + - + - 7.423545 + - 43.733307 + - + - 7.423508 + - 43.7333 + - + - 7.423535 + - 43.73324 + - + - 7.423668 + - 43.732857 + - + - 7.423455 + - 43.73282 + - + - 7.423356 + - 43.73307 + - + - 7.423199 + - 43.733135 + - + - 7.423043 + - 43.73321 + - + - 7.422855 + - 43.73337 + - + - 7.422744 + - 43.733517 + - + - 7.422694 + - 43.733624 + - + - 7.422659 + - 43.73374 + - + - 7.422578 + - 43.734074 + - + - 7.422604 + - 43.734188 + - + - 7.422541 + - 43.734425 + - + - 7.422509 + - 43.73456 + - + - 7.422697 + - 43.73458 + - + - 7.422847 + - 43.734077 + - + - 7.422881 + - 43.73408 + - + - 7.422756 + - 43.73459 + - + - 7.423254 + - 43.73466 + - + - 7.423413 + - 43.73412 + - + - 7.423512 + - 43.73413 + - + - 7.423351 + - 43.734753 + - + - 7.42326 + - 43.73506 + - + - 7.423223 + - 43.73522 + - + - 7.423173 + - 43.735416 + - + - 7.423072 + - 43.7354 + - + - 7.4232 + - 43.734898 + - + - 7.423191 + - 43.734848 + - + - 7.422693 + - 43.734776 + - + - 7.42256 + - 43.7353 + - + - 7.422513 + - 43.73529 + - + - 7.422655 + - 43.734776 + - + - 7.422423 + - 43.734737 + - + - 7.422299 + - 43.735203 + - + - 7.422233 + - 43.735435 + - + - 7.42215 + - 43.735508 + - + - 7.422032 + - 43.735546 + - + - 7.421888 + - 43.735535 + - + - 7.421866 + - 43.735683 + - + - 7.421872 + - 43.735928 + - + - 7.421975 + - 43.736275 + - + - 7.422107 + - 43.73651 + - + - 7.422269 + - 43.73673 + - + - 7.42493 + - 43.737007 + - + - 7.425109 + - 43.73692 + - + - 7.425631 + - 43.736973 + - + - 7.425674 + - 43.736706 + - + - 7.425721 + - 43.736477 + - + - 7.425736 + - 43.736366 + - + - 7.425787 + - 43.736378 + - + - 7.425655 + - 43.737087 + - + - 7.426748 + - 43.73719 + - + - 7.426931 + - 43.736523 + - + - 7.427054 + - 43.736073 + - + - 7.427052 + - 43.73606 + - + - 7.427027 + - 43.736053 + - + - 7.426908 + - 43.73604 + - + - 7.426963 + - 43.73584 + - + - 7.427089 + - 43.73575 + - + - 7.427368 + - 43.735783 + - + - 7.427427 + - 43.735886 + - + - 7.427096 + - 43.737133 + - + - 7.429107 + - 43.73754 + - + - 7.429795 + - 43.736343 + eopMode: REVERSE + velocity: 9 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-walk + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A0A0001 + - + id: ec32caa6-ddc6-4f5e-a815-654782b31abb + name: 10.100.0.2 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.427394 + - 43.73243 + path: + type: LineString + coordinates: + - + - 7.427394 + - 43.73243 + - + - 7.427393 + - 43.732353 + - + - 7.427373 + - 43.732296 + - + - 7.427259 + - 43.73213 + - + - 7.427153 + - 43.73204 + - + - 7.42705 + - 43.73197 + - + - 7.426688 + - 43.73188 + - + - 7.426318 + - 43.731792 + - + - 7.425634 + - 43.731598 + - + - 7.425535 + - 43.731598 + - + - 7.425433 + - 43.73161 + - + - 7.425336 + - 43.73161 + - + - 7.425151 + - 43.731556 + - + - 7.424628 + - 43.73141 + - + - 7.424135 + - 43.731285 + - + - 7.423933 + - 43.73179 + - + - 7.423861 + - 43.731827 + - + - 7.423566 + - 43.73177 + - + - 7.423389 + - 43.731663 + - + - 7.423225 + - 43.73154 + - + - 7.422997 + - 43.731396 + - + - 7.422858 + - 43.731335 + - + - 7.422794 + - 43.731304 + - + - 7.422718 + - 43.731285 + - + - 7.422579 + - 43.731262 + - + - 7.422418 + - 43.731255 + - + - 7.422195 + - 43.731262 + - + - 7.421973 + - 43.731285 + - + - 7.421833 + - 43.731297 + - + - 7.421705 + - 43.73133 + - + - 7.421624 + - 43.731327 + - + - 7.421565 + - 43.731323 + - + - 7.421501 + - 43.731297 + - + - 7.421483 + - 43.731228 + - + - 7.421468 + - 43.73116 + - + - 7.421443 + - 43.73103 + - + - 7.421409 + - 43.73089 + - + - 7.421372 + - 43.73075 + - + - 7.421435 + - 43.730694 + - + - 7.421506 + - 43.730682 + - + - 7.421731 + - 43.73061 + - + - 7.421821 + - 43.73055 + - + - 7.421992 + - 43.730377 + - + - 7.42217 + - 43.730206 + - + - 7.422477 + - 43.729942 + - + - 7.422555 + - 43.729897 + - + - 7.422657 + - 43.729866 + - + - 7.422801 + - 43.729847 + - + - 7.422969 + - 43.729862 + - + - 7.423137 + - 43.72991 + - + - 7.423295 + - 43.72997 + - + - 7.423507 + - 43.73005 + - + - 7.423712 + - 43.730137 + - + - 7.42411 + - 43.73032 + - + - 7.424566 + - 43.730526 + - + - 7.424802 + - 43.730633 + - + - 7.42501 + - 43.730743 + - + - 7.425791 + - 43.731174 + - + - 7.426482 + - 43.73159 + - + - 7.426963 + - 43.731895 + - + - 7.427077 + - 43.731968 + - + - 7.427186 + - 43.732048 + - + - 7.42729 + - 43.73213 + - + - 7.427362 + - 43.732227 + - + - 7.427418 + - 43.732353 + - + - 7.427415 + - 43.732384 + - + - 7.427411 + - 43.732407 + - + - 7.427394 + - 43.73243 + - + - 7.427383 + - 43.732483 + - + - 7.427288 + - 43.732548 + - + - 7.427203 + - 43.73256 + - + - 7.427085 + - 43.732555 + - + - 7.426884 + - 43.732517 + - + - 7.425842 + - 43.73234 + - + - 7.424798 + - 43.732162 + - + - 7.424667 + - 43.73214 + - + - 7.42444 + - 43.7321 + - + - 7.424072 + - 43.732044 + - + - 7.423361 + - 43.731934 + - + - 7.423054 + - 43.7319 + - + - 7.42274 + - 43.731876 + - + - 7.422414 + - 43.73187 + - + - 7.422089 + - 43.731876 + - + - 7.421887 + - 43.731884 + - + - 7.421699 + - 43.731895 + - + - 7.421429 + - 43.731926 + - + - 7.421102 + - 43.73198 + - + - 7.420582 + - 43.732067 + - + - 7.420058 + - 43.732174 + - + - 7.419941 + - 43.7322 + - + - 7.419804 + - 43.732254 + - + - 7.419237 + - 43.732403 + - + - 7.419181 + - 43.732418 + - + - 7.419127 + - 43.73245 + - + - 7.419071 + - 43.73248 + - + - 7.419063 + - 43.732513 + - + - 7.419017 + - 43.732548 + - + - 7.418957 + - 43.73256 + - + - 7.418904 + - 43.732555 + - + - 7.418859 + - 43.732525 + - + - 7.418795 + - 43.73252 + - + - 7.418733 + - 43.732536 + - + - 7.418541 + - 43.73259 + - + - 7.418358 + - 43.732643 + - + - 7.418179 + - 43.732704 + - + - 7.417854 + - 43.732807 + - + - 7.417669 + - 43.732845 + - + - 7.417487 + - 43.732895 + - + - 7.417425 + - 43.732925 + - + - 7.417405 + - 43.73295 + - + - 7.417605 + - 43.73323 + - + - 7.417778 + - 43.733547 + - + - 7.417915 + - 43.733955 + - + - 7.41809 + - 43.734455 + - + - 7.418133 + - 43.734684 + - + - 7.418188 + - 43.7349 + - + - 7.418289 + - 43.735046 + - + - 7.4184 + - 43.735184 + - + - 7.418585 + - 43.735382 + - + - 7.418671 + - 43.735455 + - + - 7.418768 + - 43.73552 + - + - 7.419179 + - 43.735825 + - + - 7.419366 + - 43.73598 + - + - 7.419533 + - 43.73615 + - + - 7.419881 + - 43.736473 + - + - 7.420241 + - 43.736786 + - + - 7.420468 + - 43.73692 + - + - 7.420685 + - 43.73703 + - + - 7.420944 + - 43.73716 + - + - 7.421228 + - 43.737274 + - + - 7.421522 + - 43.737373 + - + - 7.421826 + - 43.73747 + - + - 7.422055 + - 43.73752 + - + - 7.422283 + - 43.73756 + - + - 7.422403 + - 43.73758 + - + - 7.422472 + - 43.737526 + - + - 7.422561 + - 43.737473 + - + - 7.422688 + - 43.737442 + - + - 7.422814 + - 43.737434 + - + - 7.423132 + - 43.737423 + - + - 7.423523 + - 43.737408 + - + - 7.423972 + - 43.737442 + - + - 7.424034 + - 43.73743 + - + - 7.424064 + - 43.73741 + - + - 7.424055 + - 43.737385 + - + - 7.424028 + - 43.73735 + - + - 7.423706 + - 43.737286 + - + - 7.423228 + - 43.737183 + - + - 7.422826 + - 43.737103 + - + - 7.42263 + - 43.737076 + - + - 7.422426 + - 43.737053 + - + - 7.42209 + - 43.73702 + - + - 7.421949 + - 43.73701 + - + - 7.421754 + - 43.737003 + - + - 7.421639 + - 43.736984 + - + - 7.421527 + - 43.73696 + - + - 7.421421 + - 43.73692 + - + - 7.421323 + - 43.73687 + - + - 7.421228 + - 43.736813 + - + - 7.421133 + - 43.73675 + - + - 7.421065 + - 43.736702 + - + - 7.421003 + - 43.73664 + - + - 7.420847 + - 43.73652 + - + - 7.420513 + - 43.736244 + - + - 7.420098 + - 43.7359 + - + - 7.419858 + - 43.735672 + - + - 7.41939 + - 43.73522 + - + - 7.41916 + - 43.734985 + - + - 7.418728 + - 43.734505 + - + - 7.418581 + - 43.734325 + - + - 7.418515 + - 43.73424 + - + - 7.41849 + - 43.734142 + - + - 7.418601 + - 43.733677 + - + - 7.418681 + - 43.73336 + - + - 7.418772 + - 43.733047 + - + - 7.418813 + - 43.732906 + - + - 7.418878 + - 43.732742 + - + - 7.418915 + - 43.73265 + - + - 7.41891 + - 43.732605 + - + - 7.418904 + - 43.732555 + - + - 7.418859 + - 43.732525 + - + - 7.418849 + - 43.73247 + - + - 7.418872 + - 43.732426 + - + - 7.418902 + - 43.73241 + - + - 7.418951 + - 43.732403 + - + - 7.419008 + - 43.732403 + - + - 7.419118 + - 43.73241 + - + - 7.419225 + - 43.73239 + - + - 7.4198 + - 43.73224 + - + - 7.419934 + - 43.732185 + - + - 7.420066 + - 43.73216 + - + - 7.420587 + - 43.73205 + - + - 7.421116 + - 43.73196 + - + - 7.421403 + - 43.73192 + - + - 7.421688 + - 43.731884 + - + - 7.422084 + - 43.73186 + - + - 7.422473 + - 43.731853 + - + - 7.422827 + - 43.73187 + - + - 7.42319 + - 43.731903 + - + - 7.423363 + - 43.731922 + - + - 7.423535 + - 43.73195 + - + - 7.423881 + - 43.732002 + - + - 7.425014 + - 43.73219 + - + - 7.425588 + - 43.73229 + - + - 7.426168 + - 43.732388 + - + - 7.426901 + - 43.732506 + - + - 7.427068 + - 43.732536 + - + - 7.427147 + - 43.732548 + - + - 7.427227 + - 43.732548 + - + - 7.427279 + - 43.732533 + - + - 7.427352 + - 43.73249 + - + - 7.427394 + - 43.73243 + eopMode: LOOP + velocity: 20 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-car + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A640002 + - + id: bddd61c9-6ddd-4f7e-9082-0d004fced7ab + name: 5g-small-cell-5 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '505050505' + geoData: + location: + type: Point + coordinates: + - 7.420653 + - 43.731743 + radius: 100 + - + id: 8e0dad0d-72c9-4b6d-850b-06b02243b1d3 + name: 5g-small-cell-6 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '606060606' + geoData: + location: + type: Point + coordinates: + - 7.421865 + - 43.733368 + radius: 100 + - + id: 7d3688cc-0dda-48b1-a171-b817c176e053 + name: 5g-small-cell-7 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '808080808' + geoData: + location: + type: Point + coordinates: + - 7.42509 + - 43.73189 + radius: 100 + - + id: 91691048-64bb-4d2f-917f-4219a95881c0 + name: 5g-small-cell-8 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '909090909' + geoData: + location: + type: Point + coordinates: + - 7.42704 + - 43.732407 + radius: 100 + - + id: 472c9927-800a-46e9-9d62-d08b09080dd5 + name: zone03 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: darkorange + networkLocations: + - + id: zone03-DEFAULT + name: zone03-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: e4ce8267-5433-4b2b-aa5a-9a40de76b685 + name: 4g-macro-cell-6 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '6060606' + geoData: + location: + type: Point + coordinates: + - 7.421007 + - 43.737087 + radius: 400 + physicalLocations: + - + id: c3bc8d8d-170b-45bb-93a9-8ce658571321 + name: 10.1.0.1 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.421802 + - 43.736515 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-ios-videocam + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A010001 + - + id: 663df9f0-57af-43aa-ba2e-e45a4b2f3c28 + name: 4g-macro-cell-7 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '7070707' + geoData: + location: + type: Point + coordinates: + - 7.425841 + - 43.739426 + radius: 400 + - + id: a3067167-cdaf-4264-9e32-abfc0ede0564 + name: 5g-small-cell-10 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: 0A0A0A0A + geoData: + location: + type: Point + coordinates: + - 7.426598 + - 43.73844 + radius: 100 + - + id: 2c2ba76c-8880-4c5b-a949-a161713910f4 + name: 5g-small-cell-11 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: 0B0B0B0B + geoData: + location: + type: Point + coordinates: + - 7.428264 + - 43.73876 + radius: 100 + - + id: d9ca5e58-15fe-4161-840f-f3155db3729b + name: 5g-small-cell-12 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: 0C0C0C0C + geoData: + location: + type: Point + coordinates: + - 7.42738 + - 43.739075 + radius: 100 + - + id: 8414d39b-d3c3-45e1-a235-cf93d211579c + name: 5g-small-cell-9 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '07070707' + geoData: + location: + type: Point + coordinates: + - 7.417394 + - 43.735794 + radius: 100 + - + id: d56c4e67-0e0f-4456-9431-290de7b674c8 + name: zone04 + type: ZONE + netChar: + latency: 5 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + meta: + display.map.color: limegreen + networkLocations: + - + id: zone04-DEFAULT + name: zone04-DEFAULT + type: DEFAULT + netChar: + latency: 1 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + - + id: fc4d9ec8-ebb6-4b5d-a281-bb74af729b4a + name: 4g-macro-cell-8 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '8080808' + geoData: + location: + type: Point + coordinates: + - 7.429504 + - 43.74301 + radius: 400 + - + id: b73b3ef5-dba0-44af-a648-bbda7191c249 + name: 4g-macro-cell-9 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: '9090909' + geoData: + location: + type: Point + coordinates: + - 7.432551 + - 43.746544 + radius: 400 + - + id: e1d47a4b-0664-4915-81ea-eb0d70af15a7 + name: 4g-macro-cell-10 + type: POA-4G + netChar: + latency: 10 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa4GConfig: + cellId: A0A0A0A + geoData: + location: + type: Point + coordinates: + - 7.437573 + - 43.748993 + radius: 400 + physicalLocations: + - + id: 4e423f57-daef-4c1c-b30e-45e88e3c9366 + name: 10.1.0.4 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.438248 + - 43.74835 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-ios-videocam + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A010004 + - + id: 824cf1bf-f91d-44c2-906d-e939fa3339cd + name: 10.10.0.2 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.438755 + - 43.748512 + path: + type: LineString + coordinates: + - + - 7.438755 + - 43.748512 + - + - 7.438267 + - 43.748566 + - + - 7.437795 + - 43.7484 + - + - 7.437684 + - 43.748253 + - + - 7.437555 + - 43.748203 + - + - 7.437341 + - 43.748203 + - + - 7.43673 + - 43.747974 + - + - 7.436623 + - 43.747704 + - + - 7.436237 + - 43.747643 + - + - 7.435969 + - 43.74743 + - + - 7.435841 + - 43.74717 + - + - 7.435504 + - 43.74695 + - + - 7.434829 + - 43.74691 + - + - 7.434293 + - 43.746685 + - + - 7.433882 + - 43.746166 + - + - 7.433431 + - 43.746063 + - + - 7.432831 + - 43.745686 + - + - 7.432585 + - 43.745182 + - + - 7.432767 + - 43.744633 + - + - 7.432552 + - 43.744244 + - + - 7.432617 + - 43.743763 + - + - 7.432305 + - 43.743305 + - + - 7.431682 + - 43.742676 + - + - 7.431136 + - 43.74201 + - + - 7.430524 + - 43.741123 + - + - 7.430432 + - 43.740696 + - + - 7.430382 + - 43.740437 + - + - 7.430384 + - 43.74021 + - + - 7.430288 + - 43.739372 + - + - 7.429773 + - 43.73849 + - + - 7.429976 + - 43.738228 + - + - 7.429654 + - 43.73791 + - + - 7.429371 + - 43.73765 + - + - 7.430027 + - 43.736446 + eopMode: REVERSE + velocity: 9 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-walk + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A0A0002 + - + id: 097f79f4-bf76-4be0-be28-5acc3bdb0dba + name: 10.100.0.4 + type: UE + geoData: + location: + type: Point + coordinates: + - 7.438357 + - 43.74781 + path: + type: LineString + coordinates: + - + - 7.438357 + - 43.74781 + - + - 7.438296 + - 43.747852 + - + - 7.438229 + - 43.74791 + - + - 7.43813 + - 43.74803 + - + - 7.438074 + - 43.748108 + - + - 7.438025 + - 43.748264 + - + - 7.437991 + - 43.748398 + - + - 7.437937 + - 43.748512 + - + - 7.437883 + - 43.74859 + - + - 7.437741 + - 43.74875 + - + - 7.437593 + - 43.748924 + - + - 7.437481 + - 43.74905 + - + - 7.437416 + - 43.74911 + - + - 7.437419 + - 43.749146 + - + - 7.43739 + - 43.749184 + - + - 7.437339 + - 43.749203 + - + - 7.437285 + - 43.74919 + - + - 7.437256 + - 43.74917 + - + - 7.43555 + - 43.74844 + - + - 7.435097 + - 43.748184 + - + - 7.435008 + - 43.748077 + - + - 7.434885 + - 43.747814 + - + - 7.434788 + - 43.747723 + - + - 7.433391 + - 43.74693 + - + - 7.433243 + - 43.74679 + - + - 7.43301 + - 43.746536 + - + - 7.432804 + - 43.74642 + - + - 7.432353 + - 43.74604 + - + - 7.431985 + - 43.74559 + - + - 7.431216 + - 43.74428 + - + - 7.430556 + - 43.74307 + - + - 7.430336 + - 43.741848 + - + - 7.430226 + - 43.74178 + - + - 7.430038 + - 43.741756 + - + - 7.429864 + - 43.741695 + - + - 7.429766 + - 43.74158 + - + - 7.429731 + - 43.741432 + - + - 7.429797 + - 43.741234 + - + - 7.42986 + - 43.74115 + - + - 7.42995 + - 43.74109 + - + - 7.430094 + - 43.74108 + - + - 7.430255 + - 43.74114 + - + - 7.430392 + - 43.74126 + - + - 7.430475 + - 43.7415 + - + - 7.430642 + - 43.742832 + - + - 7.430717 + - 43.74308 + - + - 7.432086 + - 43.745556 + - + - 7.432441 + - 43.74601 + - + - 7.433179 + - 43.746563 + - + - 7.434716 + - 43.747498 + - + - 7.434871 + - 43.74766 + - + - 7.435108 + - 43.74807 + - + - 7.435305 + - 43.74823 + - + - 7.435923 + - 43.748547 + - + - 7.436871 + - 43.748955 + - + - 7.437138 + - 43.749054 + - + - 7.437248 + - 43.74907 + - + - 7.437368 + - 43.749058 + - + - 7.43747 + - 43.74894 + - + - 7.437652 + - 43.748714 + - + - 7.437765 + - 43.74859 + - + - 7.437835 + - 43.748512 + - + - 7.437883 + - 43.74838 + - + - 7.437918 + - 43.74817 + - + - 7.437931 + - 43.748116 + - + - 7.438001 + - 43.747997 + - + - 7.438098 + - 43.747868 + - + - 7.438138 + - 43.747826 + - + - 7.438159 + - 43.74777 + - + - 7.438159 + - 43.747692 + - + - 7.438173 + - 43.747616 + - + - 7.438205 + - 43.747566 + - + - 7.438264 + - 43.747528 + - + - 7.438347 + - 43.747513 + - + - 7.438443 + - 43.74752 + - + - 7.438505 + - 43.74755 + - + - 7.438548 + - 43.7476 + - + - 7.438569 + - 43.747654 + - + - 7.438545 + - 43.747726 + - + - 7.438494 + - 43.747772 + - + - 7.438431 + - 43.7478 + - + - 7.438357 + - 43.74781 + eopMode: LOOP + velocity: 20 + wireless: true + wirelessType: 'wifi,5g,4g' + meta: + display.map.icon: ion-android-car + netChar: + latencyDistribution: Normal + throughputDl: 1000 + throughputUl: 1000 + macId: 005C0A640004 + - + id: 3fbf9ec8-3932-455c-8352-0d06b7bb7a15 + name: 5g-small-cell-13 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: 0D0D0D0D + geoData: + location: + type: Point + coordinates: + - 7.431907 + - 43.74543 + radius: 100 + - + id: 80e3b677-56cb-495c-b798-e19f96d491b9 + name: 5g-small-cell-14 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: 0E0E0E0E + geoData: + location: + type: Point + coordinates: + - 7.431824 + - 43.74787 + radius: 100 + - + id: dcb66c87-1854-4c8e-ae88-72b14df9aaff + name: 5g-small-cell-15 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: 0F0F0F0F + geoData: + location: + type: Point + coordinates: + - 7.433529 + - 43.74865 + radius: 100 + - + id: 10b048d1-2fba-486d-89a0-d1a3191b90b4 + name: 5g-small-cell-16 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '010101010' + geoData: + location: + type: Point + coordinates: + - 7.434421 + - 43.749107 + radius: 100 + - + id: 35602880-9727-4ed6-8f53-fe0ffab22cb4 + name: 5g-small-cell-17 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '111111111' + geoData: + location: + type: Point + coordinates: + - 7.437487 + - 43.7487 + radius: 100 + - + id: 4aef0f33-51d2-472c-8441-b5c55f0de626 + name: 5g-small-cell-18 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '212121212' + geoData: + location: + type: Point + coordinates: + - 7.438839 + - 43.749706 + radius: 100 + - + id: 3396c6ae-28f8-4c8b-ba12-9991bddeed61 + name: 5g-small-cell-19 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '313131313' + geoData: + location: + type: Point + coordinates: + - 7.4371 + - 43.750282 + radius: 100 + - + id: 246f3830-3b56-4359-9452-b17f34426888 + name: 5g-small-cell-20 + type: POA-5G + netChar: + latency: 4 + latencyVariation: 1 + throughputDl: 1000 + throughputUl: 1000 + poa5GConfig: + cellId: '414141414' + geoData: + location: + type: Point + coordinates: + - 7.436006 + - 43.749382 + radius: 100 -- GitLab From d3e424d83e7d0310cf6ec992fb88cf185788725f Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 12 Aug 2024 16:16:59 +0200 Subject: [PATCH 28/58] Finalize meep-federation service skeleton --- config/.meepctl-repocfg.yaml | 6 ++- .../src/js/containers/app-container.js | 2 +- .../frontend/src/js/util/scenario-utils.js | 51 +++++++------------ 3 files changed, 22 insertions(+), 37 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index cf535cb..e50dad7 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -308,7 +308,7 @@ repo: # - meep-tc-engine # - meep-app-enablement # - meep-vis - - meep-federation + # - meep-federation # location of API specifications api: - name: 'AdvantEDGE Monitoring Engine REST API' @@ -439,7 +439,7 @@ repo: # - meep-tc-engine # - meep-app-enablement # - meep-vis - - meep-federation + # - meep-federation meep-webhook: # location of source code src: go-apps/meep-webhook @@ -966,6 +966,8 @@ repo: file: go-apps/meep-federation/api/swagger.yaml # location of user supplied API specifications user-api: + - name: 'Federation Service REST API' + file: config/api/fed-api.yaml # resources available to docker container image docker-data: # location of entry script diff --git a/js-apps/frontend/src/js/containers/app-container.js b/js-apps/frontend/src/js/containers/app-container.js index eeea90e..ac387e5 100644 --- a/js-apps/frontend/src/js/containers/app-container.js +++ b/js-apps/frontend/src/js/containers/app-container.js @@ -120,7 +120,7 @@ const apiTableMaxSize = 100; var metricsQuery = { /* tags: [{ name: 'logger_name', - value: 'meep-loc-serv,meep-federation,meep-rnis,meep-dai,meep-wais,meep-app-enablement' + value: 'meep-loc-serv,meep-federation,meep-rnis,meep-dai,meep-vis,meep-federation,meep-wais,meep-app-enablement' }], */ fields: ['id', 'endpoint', 'url', 'method', 'resp_code', 'resp_body', 'body', 'proc_time', 'logger_name', 'direction'], diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index 73dd168..39abc1e 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -659,40 +659,23 @@ export function parseEdgeApps(scenario) { disableInProgressCount: -1 }); // MEC040 - } else if (proc.image.includes('meep-federation')) { - // App support - edgeApps.push({ - id: proc.id, - name: proc.name, - instance: '', - img: proc.image, - mepName: pl.name, - env: proc.environment, - url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20Federation%20Service%20API', - path: pl.name+'/mec_app_support/v2', - pseudoName: 'MEC Application Support (011) on ' + pl.name, - dropDownName: 'MEC Application Support (011)', - enabled: true, // always running - enableInProgressCount: -1, - disableInProgressCount: -1 - }); - // Service Management - edgeApps.push({ - id: proc.id, - name: proc.name+'-service-mgmt', - instance: '', - img: proc.image, - mepName: pl.name, - env: proc.environment, - url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20Service%20Management%20API', - path: pl.name+'/fed_enablement/v1', - pseudoName: 'MEC Federation (040) on ' + pl.name, - dropDownName: 'MEC Federation (011)', - enabled: true, // always running - enableInProgressCount: -1, - disableInProgressCount: -1 - }); - } + } else if (proc.image.includes('meep-federation')) { + edgeApps.push({ + id: proc.id, + name: proc.name, + instance: '', + img: proc.image, + mepName: pl.name, + env: proc.environment, + url: 'api/?urls.primaryName='+pl.name+'%20-%20Federation%20Service%20REST%20API', + path: pl.name+'/fed_enablement/v1', + pseudoName: 'MEC Federation APIs (040) on ' + pl.name, + dropDownName: 'MEC Federation APIs (040)', + enabled: false, + enableInProgressCount: -1, + disableInProgressCount: -1 + }); + } } } } -- GitLab From c8af1e9407d00b1fa1d815d95fc6ee8efa21102e Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 21 Aug 2024 10:18:54 +0200 Subject: [PATCH 29/58] Enhance MEC 040 swagger file --- config/api/fed-api.yaml | 18 ++++++++++++++---- js-apps/frontend/src/js/util/scenario-utils.js | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/config/api/fed-api.yaml b/config/api/fed-api.yaml index 3e9f10d..6be97df 100644 --- a/config/api/fed-api.yaml +++ b/config/api/fed-api.yaml @@ -605,6 +605,15 @@ paths: system associated with the systemId operationId: servicesGET parameters: + - name: systemId + in: path + description: Identifier of the MEC system. + required: true + style: simple + explode: false + schema: + type: string + x-exportParamName: Path.systemId - name: seInstancerId in: query description: Indicator of a MEC service offered for MEC federation. @@ -683,24 +692,25 @@ paths: parameters: - name: systemId in: path - description: MEC system identifier + description: Identifier of the MEC system. required: true style: simple explode: false schema: type: string - format: uri + x-exportParamName: Path.systemId - name: serviceId in: path - description: Service identifier + description: Service identifier. required: true style: simple explode: false schema: type: string - format: uri + x-exportParamName: Path.serviceId responses: "200": + description: "Upon success, a response body containing data type describing the specific subscription data type is returned." content: application/json: schema: diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index 39abc1e..5a55b5f 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -654,7 +654,7 @@ export function parseEdgeApps(scenario) { path: pl.name+'/dev_app/v1', pseudoName: 'Device Application Interface (016) on ' + pl.name, dropDownName: 'Device Application Interface (016)', - enabled: false, + enabled: true, enableInProgressCount: -1, disableInProgressCount: -1 }); @@ -671,7 +671,7 @@ export function parseEdgeApps(scenario) { path: pl.name+'/fed_enablement/v1', pseudoName: 'MEC Federation APIs (040) on ' + pl.name, dropDownName: 'MEC Federation APIs (040)', - enabled: false, + enabled: true, enableInProgressCount: -1, disableInProgressCount: -1 }); -- GitLab From 74a2da5842417e53311c7fd8785613c786e94bd8 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 2 Sep 2024 06:19:55 +0000 Subject: [PATCH 30/58] remove appTermination endpoint from the bwm swagger file --- config/api/bwm-api.yaml | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/config/api/bwm-api.yaml b/config/api/bwm-api.yaml index 1700f66..6aab01f 100644 --- a/config/api/bwm-api.yaml +++ b/config/api/bwm-api.yaml @@ -387,33 +387,6 @@ paths: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - /notifications/mec011/appTermination: - post: - tags: - - location - summary: MEC011 Application Termination notification for self termination - description: Terminates itself. - operationId: mec011AppTerminationPOST - requestBody: - description: Termination notification details - content: - application/json: - schema: - $ref: '#/components/schemas/AppTerminationNotification' - example: - notificationType: AppTerminationNotification - operationAction: TERMINATING - maxGracefulTimeout: 10 - links: - subscription: - href: http://mec011Server.example.com/mec_app_support/v1/applications/appId1234/subscriptions/sub123 - confirmTermination: - href: http://mec011Server.example.com/mec_app_support/v1/confirm_termination - required: true - responses: - "204": - description: No Content - x-swagger-router-controller: notifications /subscriptions: get: tags: -- GitLab From 988e706caf3267db9a2f0ec3cec92f9d7835d5fa Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 2 Sep 2024 06:29:12 +0000 Subject: [PATCH 31/58] remove appTerminationNotification and AppTerminationNotification_links from the bwm-api swagger file --- config/api/bwm-api.yaml | 66 ----------------------------------------- 1 file changed, 66 deletions(-) diff --git a/config/api/bwm-api.yaml b/config/api/bwm-api.yaml index 6aab01f..bc6f7d9 100644 --- a/config/api/bwm-api.yaml +++ b/config/api/bwm-api.yaml @@ -1064,29 +1064,6 @@ components: format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: URI - AppTerminationNotification: - required: - - _links - - maxGracefulTimeout - - notificationType - - operationAction - type: object - properties: - notificationType: - type: string - description: Shall be set to AppTerminationNotification. - operationAction: - $ref: '#/components/schemas/OperationActionType' - maxGracefulTimeout: - type: integer - description: Maximum timeout value in seconds for graceful termination or - graceful stop of an application instance. - format: uint32 - _links: - $ref: '#/components/schemas/AppTerminationNotification__links' - description: This type represents the information that the MEC platform notifies - the subscribed application instance about the corresponding application instance - termination/stop. OperationActionType: type: string description: Operation that is being performed on the MEC application instance. @@ -1207,49 +1184,6 @@ components: description: 'Source port identity of session ' x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: String - AppTerminationNotification__links: - required: - - subscription - type: object - properties: - subscription: - $ref: '#/components/schemas/LinkType' - confirmTermination: - $ref: '#/components/schemas/LinkType' - description: Object containing hyperlinks related to the resource. - responses: - "204": - description: "Upon success, a response 204 No Content without any response body\ - \ is returned." - "400": - description: "Bad Request : used to indicate that incorrect parameters were\ - \ passed to the request." - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - "403": - description: "Forbidden : operation is not allowed given the current status\ - \ of the resource." - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - "404": - description: "Not Found : used when a client provided a URI that cannot be\ - \ mapped to a valid resource URI." - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' - "412": - description: "Precondition failed : used when a condition has failed during\ - \ conditional requests, e.g. when using ETags to avoid write conflicts when\ - \ using PUT" - content: - application/problem+json: - schema: - $ref: '#/components/schemas/ProblemDetails' parameters: Path.allocationId: name: allocationId -- GitLab From 8a105ac39e33bfaea72fd5373264ac6e50fcd310 Mon Sep 17 00:00:00 2001 From: Umair Zafar Date: Mon, 2 Sep 2024 06:30:43 +0000 Subject: [PATCH 32/58] remove appTermination endpoint from the mts-api swagger file --- config/api/mts-api.yaml | 60 ----------------------------------------- 1 file changed, 60 deletions(-) diff --git a/config/api/mts-api.yaml b/config/api/mts-api.yaml index 4f9327c..34fc418 100644 --- a/config/api/mts-api.yaml +++ b/config/api/mts-api.yaml @@ -350,33 +350,6 @@ paths: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - /notifications/mec011/appTermination: - post: - tags: - - mts - summary: MEC011 Application Termination notification for self termination - description: Terminates itself. - operationId: mec011AppTerminationPOST - requestBody: - description: Termination notification details - content: - application/json: - schema: - $ref: '#/components/schemas/AppTerminationNotification' - example: - notificationType: AppTerminationNotification - operationAction: TERMINATING - maxGracefulTimeout: 10 - links: - subscription: - href: http://mec011Server.example.com/mec_app_support/v1/applications/appId1234/subscriptions/sub123 - confirmTermination: - href: http://mec011Server.example.com/mec_app_support/v1/confirm_termination - required: true - responses: - "204": - description: No Content - x-swagger-router-controller: notifications components: schemas: MtsCapabilityInfo: @@ -589,29 +562,6 @@ components: format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: URI - AppTerminationNotification: - required: - - _links - - maxGracefulTimeout - - notificationType - - operationAction - type: object - properties: - notificationType: - type: string - description: Shall be set to AppTerminationNotification. - operationAction: - $ref: '#/components/schemas/OperationActionType' - maxGracefulTimeout: - type: integer - description: Maximum timeout value in seconds for graceful termination or - graceful stop of an application instance. - format: uint32 - _links: - $ref: '#/components/schemas/AppTerminationNotification__links' - description: This type represents the information that the MEC platform notifies - the subscribed application instance about the corresponding application instance - termination/stop. OperationActionType: type: string description: Operation that is being performed on the MEC application instance. @@ -853,16 +803,6 @@ components: example: seconds: 1 nanoSeconds: 1 - AppTerminationNotification__links: - required: - - subscription - type: object - properties: - subscription: - $ref: '#/components/schemas/LinkType' - confirmTermination: - $ref: '#/components/schemas/LinkType' - description: Object containing hyperlinks related to the resource. responses: "204": description: "Upon success, a response 204 No Content without any response body\ -- GitLab From a2a822dc767e1c3183b4833eeb891f49f1a7d7dc Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Fri, 13 Sep 2024 04:52:04 +0000 Subject: [PATCH 33/58] CAPIF API swagger file v1 --- config/api/capif-mgmt.yaml | 1584 ++++++++++++++++++++++++++++++++++++ 1 file changed, 1584 insertions(+) create mode 100644 config/api/capif-mgmt.yaml diff --git a/config/api/capif-mgmt.yaml b/config/api/capif-mgmt.yaml new file mode 100644 index 0000000..b2cd817 --- /dev/null +++ b/config/api/capif-mgmt.yaml @@ -0,0 +1,1584 @@ +openapi: 3.0.0 +info: + title: MEC service management realized by CAPIF APIs + description: The ETSI MEC ISG MEC011 MEC Service Management realized by CAPIF APIs + described using OpenAPI + contact: + email: cti_support@etsi.org + license: + name: BSD-3-Clause + url: https://forge.etsi.org/legal-matters + version: 3.2.1 +externalDocs: + description: "ETSI GS MEC011 Application Enablement API, V3.2.1" + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.02.01_60/gs_mec011v030201p.pdf +servers: +- url: https://localhost/sandboxname/service-apis/v1 + description: Service APIs +- url: https://localhost/sandboxname/published-apis/v1 + description: Published APIs +- url: https://localhost/sandboxname/capif-events/v1 + description: CAPIF Events APIs +tags: +- name: services +- name: appServices +- name: appSubscriptions +- name: callbacks +paths: + /allServiceAPIs: + get: + tags: + - services + description: This method retrieves information about a list of mecService resources. + This method is typically used in "service availability query" procedure + operationId: Services_GET + parameters: + - name: vend-spec-etsi-mec-serinstance-id + in: query + description: Vendor-specific query parameter for service instance ID. The + "target" attribute shall be set to "/apiId". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/apiId\", \"value\": \"serviceInstanceId\"}" + - name: api-name + in: query + description: "This query parameter corresponds to the parameter \"ser_name\"\ + \ as defined in clause 8.2.3.3.1. As opposed to the cardinality of ser_instance_id\ + \ defined in clause 8.2.3.3.1 that is 0..N, this parameter only supports\ + \ a cardinality of 0..1." + required: false + style: form + explode: true + schema: + type: array + items: + type: string + - name: api-invoker-id + in: query + description: "If the Discover_Service_API is produced by the MEC platform\ + \ towards the MEC applications, this identifier shall be set to the value\ + \ of the \"appInstanceId\" (see clause 7.1.2.6). If the Discover_Service_API\ + \ is produced by the CCF, the provisions in clause 8.1.2.2.3.1 of 3GPP TS\ + \ 29.222 [21] apply. " + required: false + style: form + explode: true + schema: + type: string + - name: vend-spec-etsi-mec-sercategory-id + in: query + description: Vendor-specific query parameter for service category ID. The + "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id\"\ + , \"value\": \"serviceCategoryId\"}" + - name: vend-spec-etsi-mec-consumed-local-only + in: query + description: Vendor-specific query parameter for consumed local only. The + "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly\"\ + , \"value\": \"true\"}" + - name: vend-spec-etsi-mec-is-local + in: query + description: Vendor-specific query parameter for is local. The "target" attribute + shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal\"\ + , \"value\": \"true\"}" + - name: vend-spec-etsi-mec-scope-of-locality + in: query + description: Vendor-specific query parameter for scope of locality. The "target" + attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality\"\ + , \"value\": \"scopeOfLocalityValue\"}" + responses: + "200": + description: | + The response body contains the result of the search over the list of registered APIs. + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveredAPIs' + "307": + description: | + Temporary redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: Contains an alternative target URI of the resource located + in an alternative CCF. + style: simple + explode: false + schema: + type: string + "308": + description: | + Permanent redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: Contains an alternative target URI of the resource located + in an alternative CCF. + style: simple + explode: false + schema: + type: string + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "414": + description: It is used to indicate that the server is refusing to process + the request because the request URI is longer than the server is willing + or able to process. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + servers: + - url: https://localhost/sandboxname/service-apis/v1 + /{apfId}/service-apis: + get: + tags: + - appServices + summary: get services + description: This method retrieves information about a list of mecService resources. + This method is typically used in "service availability query" procedure + operationId: AppServices_GET + parameters: + - name: apfId + in: path + description: "Identifier of the entity that registers the service API. If\ + \ the MEC app plays the role of the APF, this variable shall be set to the\ + \ value of the \"appInstanceId\" (see clause 7.1.2.6). If the MEC platform\ + \ plays the role of the APF, this variable shall be set to a specific identifier\ + \ that identifies the MEC platform. " + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: | + Successful case. The representation(s) of the "Individual APF published API" resource(s) of the requested service API(s) shall be returned in the response body. If there are no active "Individual APF published API" resources at the CCF, an empty array is returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceAPIDescription' + x-content-type: application/json + "307": + description: | + Temporary redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "308": + description: | + Permanent redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + post: + tags: + - appServices + summary: Publish a new API + description: Enables a service consumer to request to publish a new API at the + CCF. + operationId: AppServices_POST + parameters: + - name: apfId + in: path + description: "Identifier of the entity that registers the service API. If\ + \ the MEC app plays the role of the APF, this variable shall be set to the\ + \ value of the \"appInstanceId\" (see clause 7.1.2.6). If the MEC platform\ + \ plays the role of the APF, this variable shall be set to a specific identifier\ + \ that identifies the MEC platform. " + required: true + style: simple + explode: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + required: true + responses: + "201": + description: | + Successful case. The service API is successfully published. The URI of the created "Individual APF published API" resource shall be returned in an HTTP "Location" header. + headers: + Location: + description: | + Contains the URI of the newly created resource, according to the structure: {apiRoot}/published-apis//{apfId}/service-apis/{serviceApiId} + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + servers: + - url: https://localhost/sandboxname/published-apis/v1 + /{apfId}/service-apis/{serviceApiId}: + get: + tags: + - appServices + description: The HTTP GET method allows a service consumer to retrieve an existing + "Individual APF published API" resource at the CCF. + operationId: AppServicesServiceId_GET + parameters: + - name: apfId + in: path + description: "Identifier of the entity that registers the service API. If\ + \ the MEC app plays the role of the APF, this variable shall be set to the\ + \ value of the \"appInstanceId\" (see clause 7.1.2.6). If the MEC platform\ + \ plays the role of the APF, this variable shall be set to a specific identifier\ + \ that identifies the MEC platform. " + required: true + style: simple + explode: false + schema: + type: string + - name: serviceApiId + in: path + description: Represents a MEC service instance. + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: | + Successful case. The service API is successfully published and a representation of the created "Individual APF published API" resource shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceAPIDescription' + x-content-type: application/json + "307": + description: | + Temporary redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "308": + description: | + Permanent redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + put: + tags: + - appServices + description: The HTTP PUT method allows a service consumer to update an existing + "Individual APF published API" resource at the CCF. + operationId: AppServicesServiceId_PUT + parameters: + - name: apfId + in: path + description: "Identifier of the entity that registers the service API. If\ + \ the MEC app plays the role of the APF, this variable shall be set to the\ + \ value of the \"appInstanceId\" (see clause 7.1.2.6). If the MEC platform\ + \ plays the role of the APF, this variable shall be set to a specific identifier\ + \ that identifies the MEC platform. " + required: true + style: simple + explode: false + schema: + type: string + - name: serviceApiId + in: path + description: Represents a MEC service instance. + required: true + style: simple + explode: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + required: true + responses: + "200": + description: | + Successful case. The service API is successfully published and a representation of the created "Individual APF published API" resource shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceAPIDescription' + x-content-type: application/json + "204": + description: Successful case. The "Individual APF published API" resource + is successfully updated and no content is returned in the response body. + "307": + description: | + Temporary redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "308": + description: | + Permanent redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "Precondition Failed. It is used when a condition has failed\ + \ during conditional requests, e.g. when using ETags to avoid write conflicts." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + delete: + tags: + - appServices + description: The HTTP DELETE method allows a service consumer to delete an existing + "Individual APF published API" resource at the CCF + operationId: AppServicesServiceId_DELETE + parameters: + - name: apfId + in: path + description: "Identifier of the entity that registers the service API. If\ + \ the MEC app plays the role of the APF, this variable shall be set to the\ + \ value of the \"appInstanceId\" (see clause 7.1.2.6). If the MEC platform\ + \ plays the role of the APF, this variable shall be set to a specific identifier\ + \ that identifies the MEC platform. " + required: true + style: simple + explode: false + schema: + type: string + - name: serviceApiId + in: path + description: Represents a MEC service instance. + required: true + style: simple + explode: false + schema: + type: string + responses: + "204": + description: Successful case. The "Individual APF published API" resource + is successfully deleted. + "307": + description: | + Temporary redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "308": + description: | + Permanent redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + patch: + tags: + - appServices + description: The HTTP PATCH method allows a service consumer to modify an existing + "Individual APF published API" resource at the CCF. + operationId: AppServicesServiceId_PATCH + parameters: + - name: apfId + in: path + description: "Identifier of the entity that registers the service API. If\ + \ the MEC app plays the role of the APF, this variable shall be set to the\ + \ value of the \"appInstanceId\" (see clause 7.1.2.6). If the MEC platform\ + \ plays the role of the APF, this variable shall be set to a specific identifier\ + \ that identifies the MEC platform. " + required: true + style: simple + explode: false + schema: + type: string + - name: serviceApiId + in: path + description: Represents a MEC service instance. + required: true + style: simple + explode: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescriptionPatch' + required: true + responses: + "200": + description: "Successful case. The \"Individual APF published API\"\n resource\ + \ is successfully modified and a representation of \n the updated resource\ + \ shall be returned in the response \n body.\n" + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceAPIDescription' + x-content-type: application/json + "204": + description: Successful case. The "Individual APF published API" resource + is successfully updated and no content is returned in the response body. + "307": + description: | + Temporary redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "308": + description: | + Permanent redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + headers: + Location: + description: | + Contains an alternative target URI of the resource located in an alternative CCF. + style: simple + explode: false + schema: + type: string + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "Precondition Failed. It is used when a condition has failed\ + \ during conditional requests, e.g. when using ETags to avoid write conflicts." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + servers: + - url: https://localhost/sandboxname/published-apis/v1 + /{subscriberId}/subscriptions: + post: + tags: + - appSubscriptions + summary: Create a new CAPIF Events Subscription + description: Create a new CAPIF Events Subscription resource. + operationId: ApplicationsSubscriptions_POST + parameters: + - name: subscriberId + in: path + description: 'This variable shall be set to the value of the "appInstanceId" + (see clause 7.1.2.6). ' + required: true + style: simple + explode: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + required: true + responses: + "201": + description: | + CAPIF Events Subscription resource created successfully. The URI of the created resource shall be returned in the "Location" HTTP header + headers: + Location: + description: | + Contains the URI of the newly created resource, according to the structure: {apiRoot}/capif-events//{subscriberId}/subscriptions/{subscriptionId} + style: simple + explode: false + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + callbacks: + EventNotification: + '{$request.body#/callbackReference}': + post: + tags: + - callbacks + summary: Create callback + description: "The values SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE,\ + \ and SERVICE_API_UPDATE defined in the type \"CAPIFEvent\" shall\ + \ be supported. The remaining values of that type need not be supported." + operationId: EventNotification_POST + requestBody: + $ref: '#/components/requestBodies/EventNotification' + responses: + "204": + description: ' The receipt of the Notification is acknowledged.' + deprecated: false + servers: + - url: https://localhost/sandboxname/capif-events/v1 + '/{subscriberId}/subscriptions/{subscriptionId} ': + put: + tags: + - appSubscriptions + summary: The PUT method is used to update an existing subscription resource. + description: The susbcribing entity shall initiate the HTTP PUT request message + and the CAPIF core function shall respond to the message. + operationId: ApplicationsSubscriptions_PUT + parameters: + - name: subscriberId + in: path + description: 'This variable shall be set to the value of the "appInstanceId" + (see clause 7.1.2.6). ' + required: true + style: simple + explode: false + schema: + type: string + - name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + required: true + responses: + "200": + description: "The event subscription was successfully updated, and a representation\ + \ of the updated resource is returned." + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + "204": + description: The event subscription was successfully updated and no content + is returned in the response body. + "307": + description: Temporary redirection. The response shall include a Location + header field containing an alternative URI of the resource located in + an alternative CAPIF core function. + headers: + Location: + description: Contains an alternative URI of the resource located in + an alternative CAPIF core function. + style: simple + explode: false + schema: + type: string + "308": + description: Permanent redirection. The response shall include a Location + header field containing an alternative URI of the resource located in + an alternative CAPIF core function. + headers: + Location: + description: Contains an alternative URI of the resource located in + an alternative CAPIF core function. + style: simple + explode: false + schema: + type: string + "400": + description: Bad Request. It is used to indicate that incorrect parameters + were passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + delete: + tags: + - appSubscriptions + summary: Delete an existing CAPIF Event Subscription + description: This endpoint deletes an existing CAPIF Event Subscription resource. + operationId: ApplicationsSubscription_DELETE + parameters: + - name: subscriberId + in: path + description: 'This variable shall be set to the value of the "appInstanceId" + (see clause 7.1.2.6). ' + required: true + style: simple + explode: false + schema: + type: string + - name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string + responses: + "204": + description: The individual CAPIF Events Subscription matching the subscriptionId + is deleted. + "307": + description: "Temporary redirection, during resource termination. The response\ + \ shall include a Location header field containing an alternative URI\ + \ of the resource located in an alternative CAPIF core function." + headers: + Location: + description: An alternative URI of the resource located in an alternative + CAPIF core function. + style: simple + explode: false + schema: + type: string + "308": + description: "Permanent redirection, during resource termination. The response\ + \ shall include a Location header field containing an alternative URI\ + \ of the resource located in an alternative CAPIF core function." + headers: + Location: + description: An alternative URI of the resource located in an alternative + CAPIF core function. + style: simple + explode: false + schema: + type: string + "400": + description: Bad Request. The request was invalid or cannot be served. The + exact error should be explained in the error payload. + "401": + description: Unauthorized. The request requires user authentication. + "403": + description: Forbidden. The server understood the request but refuses to + authorize it. + "404": + description: Not Found. The server has not found anything matching the Request-URI. + "500": + description: Internal Server Error. The server encountered an unexpected + condition which prevented it from fulfilling the request. + patch: + tags: + - appSubscriptions + summary: Modify an existing CAPIF Event Subscription + description: This endpoint modifies an existing CAPIF Event Subscription resource. + operationId: ApplicationsSubscription_patch + parameters: + - name: subscriberId + in: path + description: 'This variable shall be set to the value of the "appInstanceId" + (see clause 7.1.2.6). ' + required: true + style: simple + explode: false + schema: + type: string + - name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscriptionPatch' + required: true + responses: + "200": + description: The subscription was successfully modified and a representation + of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + "204": + description: The subscription was successfully modified and no content was + returned in the response body. + "307": + description: Temporary redirection. The response shall include a Location + header field containing an alternative URI of the resource located in + an alternative CAPIF core function. + headers: + Location: + description: Contains an alternative URI of the resource located in + an alternative CAPIF core function. + style: simple + explode: false + schema: + type: string + "308": + description: Permanent redirection. The response shall include a Location + header field containing an alternative URI of the resource located in + an alternative CAPIF core function. + headers: + Location: + description: Contains an alternative URI of the resource located in + an alternative CAPIF core function. + style: simple + explode: false + schema: + type: string + servers: + - url: https://localhost/sandboxname/capif-events/v1 +components: + schemas: + EventSubscriptionPatch: + required: + - events + type: object + properties: + events: + type: array + description: | + The events for which the subscription is modified. + items: + $ref: '#/components/schemas/CAPIFEvent' + notificationDestination: + type: string + description: | + URI to which notifications will be sent. Shall be set to the value of the "callbackReference" attribute in the "SerAvailabilityNotificationSubscription" structure. + format: uri + CAPIFEventFilter: + title: CAPIFEventFilter + type: object + properties: + apiIds: + type: array + description: Identifiers of service instances about which to report events. + items: + type: string + EventSubscription: + required: + - events + - notificationDestination + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/CAPIFEvent' + eventFilters: + type: array + items: + $ref: '#/components/schemas/CAPIFEventFilter' + notificationDestination: + type: string + description: | + URI selected by the MEC application instance to receive notifications on the subscribed MEC service availability information. This shall be included in both the request and the response. + format: uri + requestTestNotification: + type: boolean + websocketNotifConfig: + type: string + example: + notificationDestination: http://example.com/aeiou + websocketNotifConfig: websocketNotifConfig + events: + - SERVICE_API_AVAILABLE + - SERVICE_API_AVAILABLE + requestTestNotification: true + CAPIFEvent: + type: string + description: | + The CAPIFEvent data type represents the type of events for which the subscription is made. + enum: + - SERVICE_API_AVAILABLE + - SERVICE_API_UNAVAILABLE + - SERVICE_API_UPDATE + CategoryRef: + required: + - href + - id + - name + - version + type: object + properties: + href: + type: string + description: Reference of the catalogue + format: uri + id: + type: string + description: Unique identifier of the category + name: + type: string + description: "Name of the category, example values include RNI, Location\ + \ & Bandwidth Management" + version: + type: string + description: Category version + description: This type represents the category reference + example: + name: name + href: http://example.com/aeiou + id: id + version: version + ProblemDetails: + required: + - detail + - status + type: object + properties: + type: + type: string + description: A URI reference according to IETF RFC 3986 that identifies + the problem type + format: uri + title: + type: string + description: "A short, human-readable summary of the problem type" + status: + type: integer + description: The HTTP status code for this occurrence of the problem + format: uint32 + detail: + type: string + description: A human-readable explanation specific to this occurrence of + the problem + instance: + type: string + description: A URI reference that identifies the specific occurrence of + the problem + format: uri + EventNotification: + type: object + properties: + events: + type: array + description: | + The values SERVICE_API_AVAILABLE, SERVICE_API_UNAVAILABLE, and SERVICE_API_UPDATE defined in the type "CAPIFEvent" shall be supported. The remaining values of that type need not be supported. + items: + $ref: '#/components/schemas/CAPIFEvent' + SerializerType: + type: string + description: | + The enumeration SerializerType represents types of serializers. This enumeration shall be extensible. + enum: + - JSON + - XML + - PROTOBUF3 + LocalityType: + type: string + description: | + The enumeration LocalityType represents types of locality. + enum: + - MEC_SYSTEM + - MEC_HOST + - NFVI_POP + - ZONE + - ZONE_GROUP + - NFVI_NODE + ServiceState: + type: string + description: | + The enumeration ServiceState represents possible states of a MEC service instance. + enum: + - ACTIVE + - INACTIVE + - SUSPENDED + DiscoveredAPIs: + type: object + properties: + serviceAPIDescriptions: + type: array + items: + $ref: '#/components/schemas/ServiceAPIDescription' + example: + serviceAPIDescriptions: + - apiName: apiName + vendorSpecific-urn:etsi:mec:capifext:service-info: + scopeOfLocality: MEC_SYSTEM + serializer: JSON + state: ACTIVE + consumedLocalOnly: true + category: + name: name + href: http://example.com/aeiou + id: id + version: version + isLocal: true + apiId: apiId + - apiName: apiName + vendorSpecific-urn:etsi:mec:capifext:service-info: + scopeOfLocality: MEC_SYSTEM + serializer: JSON + state: ACTIVE + consumedLocalOnly: true + category: + name: name + href: http://example.com/aeiou + id: id + version: version + isLocal: true + apiId: apiId + ServiceAPIDescriptionPatch: + type: object + properties: + vendorSpecific-urn:etsi:mec:capifext:service-info: + $ref: '#/components/schemas/MecServiceInfoCapifExtPatch' + ServiceAPIDescription: + type: object + properties: + apiName: + type: string + description: | + Shall be set to the value of the "serName" attribute as defined in clause 8.1.2.2. + apiId: + type: string + description: | + If present, shall be set to the value of the "serInstanceId" attribute as defined in clause 8.1.2.2. + aefProfiles: + type: array + items: + $ref: '#/components/schemas/AefProfile' + description: "AEF profile information, which includes the exposed API details (e.g., protocol). For CAPIF-4/4e interface, API publishing function shall provide this attribute to the CCF in service API publishing. For CAPIF-1/1e interface, the CCF shall provide this attribute to the API Invoker during service API discovery." + vendorSpecific-urn:etsi:mec:capifext:service-info: + $ref: '#/components/schemas/MecServiceInfoCapifExt' + example: + apiName: apiName + vendorSpecific-urn:etsi:mec:capifext:service-info: + scopeOfLocality: MEC_SYSTEM + serializer: JSON + state: ACTIVE + consumedLocalOnly: true + category: + name: name + href: http://example.com/aeiou + id: id + version: version + isLocal: true + apiId: apiId + MecServiceInfoCapifExtPatch: + type: object + properties: + serializer: + $ref: '#/components/schemas/SerializerType' + state: + $ref: '#/components/schemas/ServiceState' + scopeOfLocality: + $ref: '#/components/schemas/LocalityType' + consumedLocalOnly: + type: boolean + isLocal: + type: boolean + category: + $ref: '#/components/schemas/CategoryRef' + + MecServiceInfoCapifExt: + type: object + properties: + serializer: + $ref: '#/components/schemas/SerializerType' + state: + $ref: '#/components/schemas/ServiceState' + scopeOfLocality: + $ref: '#/components/schemas/LocalityType' + consumedLocalOnly: + type: boolean + isLocal: + type: boolean + category: + $ref: '#/components/schemas/CategoryRef' + example: + scopeOfLocality: MEC_SYSTEM + serializer: JSON + state: ACTIVE + consumedLocalOnly: true + category: + name: name + href: http://example.com/aeiou + id: id + version: version + isLocal: true + AefProfile: + type: object + properties: + aefId: + type: string + description: "AEF identifier. Shall be set to the value of the 'id' attribute as defined in clause 8.1.2.3." + versions: + type: array + items: + type: string + description: "API version. This array shall contain a single entry." + minItems: 1 + maxItems: 1 + interfaceDescriptions: + description: This type represents information about a transport endpoint + oneOf: + - $ref: '#/components/schemas/EndPointInfo.Uris' + - $ref: '#/components/schemas/EndPointInfo.Fqdn' + - $ref: '#/components/schemas/EndPointInfo.Addresses' + - $ref: '#/components/schemas/EndPointInfo.Alternative' + x-etsi-notes: "NOTE:\tExactly one of \"uris\", \"fqdn\", \"addresses\" or\ + \ \"alternative\" shall be present." + vendorSpecific-urn:etsi:mec:capifext:transport-info : + $ref: '#/components/schemas/MecTransportInfoCapifExt' + description: "Additional attribute of data type MecTransportInfoCapifExt for MEC-specific CAPIF extensions related to alternative transports." + required: + - aefId + - versions + MecTransportInfoCapifExt: + type: object + properties: + name: + type: string + description: "Name of the transport info." + description: + type: string + description: "Description of the transport info." + type: + $ref: '#/components/schemas/TransportType' + protocol: + type: string + description: The name of the protocol used. Shall be set to HTTP for a REST + API. + example: "[\"HTTP\"]" + version: + type: string + description: The version of the protocol used + example: "[\"2.0\"]" + security: + $ref: '#/components/schemas/SecurityInfo' + description: "Security information of the transport." + implSpecificInfo: + type: string + description: Additional implementation specific details of the transport + description: This type represents the general information of a MEC service. + SecurityInfo.OAuth2Info.GrantType: + title: SecurityInfo.OAuth2Info.GrantType + type: string + description: OAuth 2.0 grant type + example: "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + enum: + - OAUTH2_AUTHORIZATION_CODE + - OAUTH2_IMPLICIT_GRANT + - OAUTH2_RESOURCE_OWNER + - OAUTH2_CLIENT_CREDENTIALS + SecurityInfo.OAuth2Info: + title: SecurityInfo.OAuth2Info + required: + - grantTypes + - tokenEndpoint + type: object + properties: + grantTypes: + maxItems: 4 + minItems: 1 + type: array + description: List of supported OAuth 2.0 grant types. + items: + $ref: '#/components/schemas/SecurityInfo.OAuth2Info.GrantType' + tokenEndpoint: + type: string + description: The token endpoint + example: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + description: Parameters related to use of OAuth 2.0 + example: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + SecurityInfo: + title: SecurityInfo + type: object + properties: + oAuth2Info: + $ref: '#/components/schemas/SecurityInfo.OAuth2Info' + description: This type represents security information related to a transport + example: + oAuth2Info: + tokenEndpoint: "[\"/mecSerMgmtApi/security/TokenEndPoint\"]" + grantTypes: + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + - "[\"OAUTH2_CLIENT_CREDENTIALS\"]" + TransportType: + title: TransportType + type: string + description: The enumeration TransportType represents types of transports + example: "[\"REST_HTTP\"]" + enum: + - REST_HTTP + - MB_TOPIC_BASED + - MB_ROUTING + - MB_PUBSUB + - RPC + - RPC_STREAMING + - WEBSOCKET + EndPointInfo.Alternative: + title: EndPointInfo.Alternative + required: + - alternative + type: object + properties: + alternative: + type: object + description: "Entry point information of the service in a format defined\ + \ by an implementation, or in an external specification. See note." + description: This type represents information about a transport endpoint. + EndPointInfo.Address: + title: EndPointInfo.Address + required: + - host + - port + type: object + properties: + host: + type: string + description: Host portion of the address + example: "[\"192.0.2.0\"]" + port: + type: integer + description: Port portion of the address + description: A IP address and port pair + EndPointInfo.Addresses: + title: EndPointInfo.Addresses + required: + - addresses + type: object + properties: + addresses: + type: array + description: Entry point information of the service as one or more pairs + of IP address and port. See note. + items: + $ref: '#/components/schemas/EndPointInfo.Address' + EndPointInfo.Fqdn: + title: EndPointInfo.Fqdn + required: + - fqdn + type: object + properties: + fqdn: + type: array + description: Fully Qualified Domain Name of the service. See note. + items: + type: string + description: 'This type represents information about a transport endpoint. ' + EndPointInfo.Uris: + title: EndPointInfo.Uris + required: + - uris + type: object + properties: + uris: + type: array + description: "Entry point information of the service as string, formatted\ + \ according to URI syntax" + items: + type: string + description: This type represents information about a transport endpoint. + responses: + "400": + description: Bad Request. It is used to indicate that incorrect parameters were + passed to the request. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "401": + description: Unauthorized. It is used when the client did not submit the appropriate + credentials. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: Forbidden. The operation is not allowed given the current status + of the resource. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: Not Found. It is used when a client provided a URI that cannot + be mapped to a valid resource URI. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "409": + description: "Conflict. The operation cannot be executed currently, due to a\ + \ conflict with the state of the resource. Typically, this is because the\ + \ application instance resource is in NOT_INSTANTIATED state." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "Precondition Failed. It is used when a condition has failed during\ + \ conditional requests, e.g. when using ETags to avoid write conflicts." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "414": + description: It is used to indicate that the server is refusing to process the + request because the request URI is longer than the server is willing or able + to process. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "429": + description: Too Many Requests. It is used when a rate limiter has triggered. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + parameters: + Path.apfId: + name: apfId + in: path + description: "Identifier of the entity that registers the service API. If the\ + \ MEC app plays the role of the APF, this variable shall be set to the value\ + \ of the \"appInstanceId\" (see clause 7.1.2.6). If the MEC platform plays\ + \ the role of the APF, this variable shall be set to a specific identifier\ + \ that identifies the MEC platform. " + required: true + style: simple + explode: false + schema: + type: string + Path.subscriberId: + name: subscriberId + in: path + description: 'This variable shall be set to the value of the "appInstanceId" + (see clause 7.1.2.6). ' + required: true + style: simple + explode: false + schema: + type: string + Path.SubscriptionId: + name: subscriptionId + in: path + description: Represents a subscription to the notifications from the MEC platform. + required: true + style: simple + explode: false + schema: + type: string + Path.serviceApiId: + name: serviceApiId + in: path + description: Represents a MEC service instance. + required: true + style: simple + explode: false + schema: + type: string + Query.vend-spec-etsi-mec-sercategory-id: + name: vend-spec-etsi-mec-sercategory-id + in: query + description: Vendor-specific query parameter for service category ID. The "target" + attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id\"\ + , \"value\": \"serviceCategoryId\"}" + Query.vend-spec-etsi-mec-serinstance-id: + name: vend-spec-etsi-mec-serinstance-id + in: query + description: Vendor-specific query parameter for service instance ID. The "target" + attribute shall be set to "/apiId". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/apiId\", \"value\": \"serviceInstanceId\"}" + Query.api-name: + name: api-name + in: query + description: "This query parameter corresponds to the parameter \"ser_name\"\ + \ as defined in clause 8.2.3.3.1. As opposed to the cardinality of ser_instance_id\ + \ defined in clause 8.2.3.3.1 that is 0..N, this parameter only supports a\ + \ cardinality of 0..1." + required: false + style: form + explode: true + schema: + type: array + items: + type: string + Query.api-invoker-id: + name: api-invoker-id + in: query + description: "If the Discover_Service_API is produced by the MEC platform towards\ + \ the MEC applications, this identifier shall be set to the value of the \"\ + appInstanceId\" (see clause 7.1.2.6). If the Discover_Service_API is produced\ + \ by the CCF, the provisions in clause 8.1.2.2.3.1 of 3GPP TS 29.222 [21]\ + \ apply. " + required: false + style: form + explode: true + schema: + type: string + Query.vend-spec-etsi-mec-scope-of-locality: + name: vend-spec-etsi-mec-scope-of-locality + in: query + description: Vendor-specific query parameter for scope of locality. The "target" + attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality\"\ + , \"value\": \"scopeOfLocalityValue\"}" + Query.vend-spec-etsi-mec-is-local: + name: vend-spec-etsi-mec-is-local + in: query + description: Vendor-specific query parameter for is local. The "target" attribute + shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal\"\ + , \"value\": \"true\"}" + Query.vend-spec-etsi-mec-consumed-local-only: + name: vend-spec-etsi-mec-consumed-local-only + in: query + description: Vendor-specific query parameter for consumed local only. The "target" + attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly". + required: false + style: form + explode: true + schema: + type: string + example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly\"\ + , \"value\": \"true\"}" + requestBodies: + EventNotification: + content: + application/json: + schema: + $ref: '#/components/schemas/EventNotification' + required: true -- GitLab From 8886770b1c81321b0d1899367b4398a73cd1e140 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Fri, 13 Sep 2024 05:39:40 +0000 Subject: [PATCH 34/58] Update configuration file for the newly CAPIF service API --- config/.meepctl-repocfg.yaml | 74 ++++++------------- config/permissions.yaml | 55 ++++++++++++++ .../frontend/src/js/util/scenario-utils.js | 15 ++++ 3 files changed, 92 insertions(+), 52 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 8bde14e..d037d08 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2024 The AdvantEDGE Authors +# Copyright (c) 2022 The AdvantEDGE Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,9 +38,9 @@ repo: # platform ingress configuration ingress: # host name - host: mec-platform.etsi.org + host: 172.30.225.7 # enable https only (redirect http requests to https port) - https-only: true + https-only: false # bind to host ports (true) or node ports (false) host-ports: true # http port number @@ -48,7 +48,7 @@ repo: # https config https-port: 443 # certificate authority (none|self-signed|lets-encrypt) default: none - ca: lets-encrypt + ca: self-signed # lets-encrypt production server (true) or staging server (false) le-server-prod: true @@ -87,7 +87,7 @@ repo: # access token url token-url: https://forge.etsi.org/rep/oauth/token # OAuth redirect URI - redirect-uri: https://mec-platform.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://try-mec.etsi.org/platform-ctrl/v1/authorize # GitLab api url api-url: https://forge.etsi.org/rep/api/v4 # OAuth k8s secret (data: client-id, secret) @@ -98,9 +98,9 @@ repo: # Influx configuration influx: # enable influx data backups - enabled: true + enabled: false # object store url - url: https://metrics.mec-platform.etsi.org/ + url: https://metrics.try-mec.etsi.org/ # object store configuration secret secret: meep-influx-objstore-config # Number of days to retain daily data backups @@ -116,7 +116,7 @@ repo: # prometheus environment (dev|prod) promenv: prod # unique deployment identifier - replica: 172.29.10.52 + replica: platform-ip # Thanos long-term storage thanos: # enable Thanos @@ -148,11 +148,11 @@ repo: # 1h downsampled data retention resolution-1h: 10y # Thanos long-term storage archive - thanos-archive: + #thanos-archive: # enable Thanos archive - enabled: false + # enabled: true # archive object store configuration secret - secret: meep-thanos-archive-objstore-config + #secret: meep-thanos-archive-objstore-config # Garbage Collection configuration gc: @@ -286,7 +286,6 @@ repo: core-pods: - meep-mon-engine - meep-platform-ctrl - - meep-sandbox-api - meep-virt-engine - meep-webhook # list of sandbox pods to monitor @@ -347,39 +346,6 @@ repo: swagger: js-apps/meep-swagger-ui # location of AdvantEDGE frontend frontend: bin/meep-frontend - meep-sandbox-api: - # location of source code - src: go-apps/meep-sandbox-api - # location of binary - bin: bin/meep-sandbox-api - # location of deployment chart - chart: charts/meep-sandbox-api - # user supplied value file located @ .meep/user/values (use below file name) - chart-user-values: meep-sandbox-api.yaml - # enable meepctl build - build: true - # enable meepctl dockerize - dockerize: true - # enable meepctl deploy/delete - deploy: true - # supports code coverage measurement when built in codecov mode - codecov: true - # supports linting - lint: true - # location of API specifications - api: - - name: 'AdvantEDGE Platform Controller REST API' - file: go-apps/meep-sandbox-api/api/swagger.yaml - # location of user supplied API specifications - user-api: - # resources available to docker container image - docker-data: - # location of entry script - 'entrypoint.sh': go-apps/meep-sandbox-api/entrypoint.sh - # location of Swagger UI - #swagger: js-apps/meep-swagger-ui - # location of AdvantEDGE frontend - #frontend: bin/meep-frontend meep-virt-engine: # location of source code src: go-apps/meep-virt-engine @@ -550,12 +516,16 @@ repo: file: go-apps/meep-app-enablement/api/app-support/swagger.yaml - name: 'AdvantEDGE MEC Service Management REST API' file: go-apps/meep-app-enablement/api/service-mgmt/swagger.yaml + - name: 'AdvantEDGE MEC service management realized by CAPIF APIs' + file: go-apps/meep-app-enablement/api/capif-mgmt/swagger.yaml # location of user supplied API specifications user-api: - name: 'MEC Application Support API' file: config/api/app-support.yaml - name: 'MEC Service Management API' file: config/api/service-mgmt.yaml + - name: 'MEC Capif Management API' + file: config/api/capif-mgmt.yaml # resources available to docker container image docker-data: # location of entry script @@ -1074,7 +1044,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1085,7 +1055,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: true + deploy: false # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1247,6 +1217,11 @@ repo: src: go-packages/meep-service-mgmt-client # supports linting lint: false + meep-capif-mgmt-client: + # location of source code + src: go-packages/meep-capif-mgmt-client + # supports linting + lint: false meep-sessions: # location of source code src: go-packages/meep-sessions @@ -1325,11 +1300,6 @@ repo: src: js-packages/meep-platform-ctrl-client # supports linting lint: false - meep-sandbox-api-client: - # location of source code - src: go-packages/meep-sandbox-api-client - # supports linting - lint: false meep-sandbox-ctrl-client: # location of source code src: js-packages/meep-sandbox-ctrl-client diff --git a/config/permissions.yaml b/config/permissions.yaml index 59731f7..0a9e411 100644 --- a/config/permissions.yaml +++ b/config/permissions.yaml @@ -236,6 +236,61 @@ services: method: 'GET' mode: 'block' #------------------------------ + # MEC-CAPIF Service Management (Sbox) + #------------------------------ + - name: 'meep-app-enablement' + api: 'service-apis' + path: '/service-apis/v1' + sbox: true + default: + mode: 'allow' + fileservers: + - name: 'Api' + path: '/api' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'UserApi' + path: '/user-api' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + + #------------------------------ + # MEC-CAPIF Service Management (Sbox) + #------------------------------ + - name: 'meep-app-enablement' + api: 'published-apis' + path: '/published-apis/v1' + sbox: true + default: + mode: 'allow' + fileservers: + - name: 'Api' + path: '/api' + mode: 'verify' + roles: + admin: 'allow' + user: 'block' + - name: 'UserApi' + path: '/user-api' + mode: 'verify' + roles: + admin: 'allow' + user: 'allow' + endpoints: + - name: 'Index' + path: '/' + method: 'GET' + mode: 'block' + #------------------------------ # GIS Engine (Sbox) #------------------------------ - name: 'meep-gis-engine' diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index 769e565..ec0daa0 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -641,6 +641,21 @@ export function parseEdgeApps(scenario) { enableInProgressCount: -1, disableInProgressCount: -1 }); + edgeApps.push({ + id: proc.id, + name: proc.name+'-capif-mgmt', + instance: '', + img: proc.image, + mepName: pl.name, + env: proc.environment, + url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20Capif%20Management%20API', + path: pl.name+'/service-apis/v1', + pseudoName: 'MEC-CAPIF Service Management (011) on ' + pl.name, + dropDownName: 'MEC-CAPIF Service Management (011)', + enabled: true, // always running + enableInProgressCount: -1, + disableInProgressCount: -1 + }); } } } -- GitLab From 46c42c4cea7752908d754aad1c7fc768a6d4b309 Mon Sep 17 00:00:00 2001 From: garciay Date: Tue, 17 Sep 2024 09:34:35 +0200 Subject: [PATCH 35/58] Add MEC-040 descriptions; Move to versoon 1.10 --- js-apps/frontend/src/js/app-constants.js | 2 +- .../src/js/components/dialogs/version-dialog.js | 11 +++++++++++ .../src/js/containers/home/home-page-container.js | 10 +++++++--- networks/4g-5g-macro-v2x-fed.yaml | 2 +- networks/4g-5g-macro-v2x.yaml | 2 +- networks/4g-5g-wifi-macro.yaml | 2 +- networks/4g-macro.yaml | 2 +- networks/4g-wifi-macro.yaml | 2 +- networks/dual-mep-4g-5g-wifi-macro.yaml | 2 +- networks/dual-mep-short-path.yaml | 2 +- 10 files changed, 26 insertions(+), 11 deletions(-) diff --git a/js-apps/frontend/src/js/app-constants.js b/js-apps/frontend/src/js/app-constants.js index 6d15f43..ceedde0 100644 --- a/js-apps/frontend/src/js/app-constants.js +++ b/js-apps/frontend/src/js/app-constants.js @@ -3,7 +3,7 @@ */ // Version -export const MEC_SANDBOX_VERSION = 'v1.9'; +export const MEC_SANDBOX_VERSION = 'v1.10'; // Host export const HOST_PATH = location.origin; diff --git a/js-apps/frontend/src/js/components/dialogs/version-dialog.js b/js-apps/frontend/src/js/components/dialogs/version-dialog.js index ec7a7c4..be344ad 100644 --- a/js-apps/frontend/src/js/components/dialogs/version-dialog.js +++ b/js-apps/frontend/src/js/components/dialogs/version-dialog.js @@ -22,6 +22,17 @@ class VersionDialog extends Component { >

+

v1.10 • 2023-02-22

+ +

AdvantEDGE baseline upgrade to v1.10.0

+ STF678 Final: +
    +
  • MEC Federation Service API support
  • +
  • MEC Sandbox API for command line support
  • +
  • General maintenance fixes
  • +
+
+

v1.9 • 2023-02-22

AdvantEDGE baseline upgrade to v1.9.0

diff --git a/js-apps/frontend/src/js/containers/home/home-page-container.js b/js-apps/frontend/src/js/containers/home/home-page-container.js index 0ba9737..026e976 100644 --- a/js-apps/frontend/src/js/containers/home/home-page-container.js +++ b/js-apps/frontend/src/js/containers/home/home-page-container.js @@ -68,13 +68,17 @@ class HomePageContainer extends Component {

MEC Sandbox provides the user with a choice of scenarios combining different network technologies - (4G, 5G, Wi-Fi) and terminal types. Combining these assets in a geolocated environment, a user can gain + (4G, 5G, Wi-Fi, MEC Federation) and terminal types. Combining these assets in a geolocated environment, a user can gain hands-on experience on the behaviour and capabilities of the Location (MEC013), Radio Network Information (MEC012), Traffic Management APIs (MEC015), Application Mobility (MEC021), WLAN Information (MEC028) and - V2X Information API (MEC030) service APIs. Such contextual information can offer significant differential performance - for edge based MEC applications. + V2X Information API (MEC030) service API and MEC Federation Service API (MEC040) service APIs. + Such contextual information can offer significant differential performance for edge based MEC applications. MEC Sandbox also provides the support of capabilities described by Edge Platform Application Enablement (MEC011) and Device Application Interface (MEC016).

+

+ Users can use the MEC Sandbox API to develop their own MEC applications to access and use the live MEC APIs running an instance of the MEC Sandbox. + The demo6 example illustrates how to use the MEC Sandbox API. +

But wait - MEC Sandbox is not only a browser experience!
Users with existing applications can configure them to access and use the live MEC APIs running in their own diff --git a/networks/4g-5g-macro-v2x-fed.yaml b/networks/4g-5g-macro-v2x-fed.yaml index 9747af2..04c723c 100644 --- a/networks/4g-5g-macro-v2x-fed.yaml +++ b/networks/4g-5g-macro-v2x-fed.yaml @@ -1,4 +1,4 @@ -version: 1.9.0 +version: 1.10.0 name: 4g-5g-macro-v2x-fed deployment: netChar: diff --git a/networks/4g-5g-macro-v2x.yaml b/networks/4g-5g-macro-v2x.yaml index f0e0cb2..0846d6e 100644 --- a/networks/4g-5g-macro-v2x.yaml +++ b/networks/4g-5g-macro-v2x.yaml @@ -1,4 +1,4 @@ -version: 1.9.0 +version: 1.10.0 name: 4g-5g-macro-v2x deployment: netChar: diff --git a/networks/4g-5g-wifi-macro.yaml b/networks/4g-5g-wifi-macro.yaml index dc07779..12660e1 100644 --- a/networks/4g-5g-wifi-macro.yaml +++ b/networks/4g-5g-wifi-macro.yaml @@ -1,4 +1,4 @@ -version: 1.9.0 +version: 1.10.0 name: 4g-5g-wifi-macro deployment: netChar: diff --git a/networks/4g-macro.yaml b/networks/4g-macro.yaml index 0f31a9a..b310369 100644 --- a/networks/4g-macro.yaml +++ b/networks/4g-macro.yaml @@ -1,4 +1,4 @@ -version: 1.9.0 +version: 1.10.0 name: 4g-macro deployment: netChar: diff --git a/networks/4g-wifi-macro.yaml b/networks/4g-wifi-macro.yaml index 2309181..e0f3d44 100644 --- a/networks/4g-wifi-macro.yaml +++ b/networks/4g-wifi-macro.yaml @@ -1,4 +1,4 @@ -version: 1.9.0 +version: 1.10.0 name: 4g-wifi-macro deployment: netChar: diff --git a/networks/dual-mep-4g-5g-wifi-macro.yaml b/networks/dual-mep-4g-5g-wifi-macro.yaml index 2c07bab..70c0cf6 100644 --- a/networks/dual-mep-4g-5g-wifi-macro.yaml +++ b/networks/dual-mep-4g-5g-wifi-macro.yaml @@ -1,4 +1,4 @@ -version: 1.9.0 +version: 1.10.0 name: dual-mep-4g-5g-wifi-macro deployment: netChar: diff --git a/networks/dual-mep-short-path.yaml b/networks/dual-mep-short-path.yaml index 7b5ca2e..7dd3a73 100644 --- a/networks/dual-mep-short-path.yaml +++ b/networks/dual-mep-short-path.yaml @@ -1,4 +1,4 @@ -version: 1.9.0 +version: 1.10.0 name: dual-mep-short-path deployment: netChar: -- GitLab From de23f4c07c6d9de740186da1aea087779851ea69 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Thu, 19 Sep 2024 07:09:05 +0000 Subject: [PATCH 36/58] add example schemas for the request bodies in GET PUT AND PATCH methods --- config/api/capif-mgmt.yaml | 86 +++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) diff --git a/config/api/capif-mgmt.yaml b/config/api/capif-mgmt.yaml index b2cd817..263264b 100644 --- a/config/api/capif-mgmt.yaml +++ b/config/api/capif-mgmt.yaml @@ -273,6 +273,34 @@ paths: application/json: schema: $ref: '#/components/schemas/ServiceAPIDescription' + example: + apiName: "mec030-1-new" + aefProfiles: + - aefId: "sandboxTransport" + versions: + - "3.1.1" + interfaceDescriptions: + uris: + - "http://my.callback.com/sbx2cmq8bn/mep1/vis/v2/" + fqdn: null + addresses: null + alternative: null + vendorSpecific-urn:etsi:mec:capifext:transport-info: + name: "REST" + type: "REST_HTTP" + protocol: "HTTP" + version: "2.0" + vendorSpecific-urn:etsi:mec:capifext:service-info: + serializer: "JSON" + state: "ACTIVE" + scopeOfLocality: "MEC_SYSTEM" + consumedLocalOnly: true + isLocal: true + category: + href: "catalogueHref" + id: "visId" + name: "V2XI" + version: "v2" required: true responses: "201": @@ -406,6 +434,34 @@ paths: application/json: schema: $ref: '#/components/schemas/ServiceAPIDescription' + example: + apiName: "mec030-1-new" + aefProfiles: + - aefId: "sandboxTransport" + versions: + - "3.1.1" + interfaceDescriptions: + uris: + - "http://my.callback.com/sbx2cmq8bn/mep1/vis/v2/" + fqdn: null + addresses: null + alternative: null + vendorSpecific-urn:etsi:mec:capifext:transport-info: + name: "REST" + type: "REST_HTTP" + protocol: "HTTP" + version: "2.0" + vendorSpecific-urn:etsi:mec:capifext:service-info: + serializer: "JSON" + state: "ACTIVE" + scopeOfLocality: "MEC_SYSTEM" + consumedLocalOnly: true + isLocal: true + category: + href: "catalogueHref" + id: "visId" + name: "V2XI" + version: "v2" required: true responses: "200": @@ -569,7 +625,35 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/ServiceAPIDescriptionPatch' + $ref: '#/components/schemas/ServiceAPIDescription' + example: + apiName: "mec030-1-new" + aefProfiles: + - aefId: "sandboxTransport" + versions: + - "3.1.1" + interfaceDescriptions: + uris: + - "http://my.callback.com/sbx2cmq8bn/mep1/vis/v2/" + fqdn: null + addresses: null + alternative: null + vendorSpecific-urn:etsi:mec:capifext:transport-info: + name: "REST" + type: "REST_HTTP" + protocol: "HTTP" + version: "2.0" + vendorSpecific-urn:etsi:mec:capifext:service-info: + serializer: "JSON" + state: "ACTIVE" + scopeOfLocality: "MEC_SYSTEM" + consumedLocalOnly: true + isLocal: true + category: + href: "catalogueHref" + id: "visId" + name: "V2XI" + version: "v2" required: true responses: "200": -- GitLab From b2a73bac9c52e5d40d3f7c3ebf670a30231d5d0f Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Fri, 20 Sep 2024 05:05:53 +0000 Subject: [PATCH 37/58] Add example schemas for the subscription resource --- config/api/capif-mgmt.yaml | 42 +++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/config/api/capif-mgmt.yaml b/config/api/capif-mgmt.yaml index 263264b..36ff8a9 100644 --- a/config/api/capif-mgmt.yaml +++ b/config/api/capif-mgmt.yaml @@ -627,22 +627,6 @@ paths: schema: $ref: '#/components/schemas/ServiceAPIDescription' example: - apiName: "mec030-1-new" - aefProfiles: - - aefId: "sandboxTransport" - versions: - - "3.1.1" - interfaceDescriptions: - uris: - - "http://my.callback.com/sbx2cmq8bn/mep1/vis/v2/" - fqdn: null - addresses: null - alternative: null - vendorSpecific-urn:etsi:mec:capifext:transport-info: - name: "REST" - type: "REST_HTTP" - protocol: "HTTP" - version: "2.0" vendorSpecific-urn:etsi:mec:capifext:service-info: serializer: "JSON" state: "ACTIVE" @@ -744,7 +728,16 @@ paths: application/json: schema: $ref: '#/components/schemas/EventSubscription' + example: + notificationDestination: "http://my.callback.com/mec_capif_mgmt_ser_availabilities/some-id" + events: + - "SERVICE_API_UNAVAILABLE" + eventFilters: + - apiIds: + - "0a0faac0-bcbb-4d45-b673-d37ac6d3dc13" + requestTestNotification: true required: true + responses: "201": description: | @@ -832,6 +825,14 @@ paths: application/json: schema: $ref: '#/components/schemas/EventSubscription' + example: + notificationDestination: "http://my.callback.com/mec_capif_mgmt_ser_availabilities/some-id" + events: + - "SERVICE_API_UNAVAILABLE" + eventFilters: + - apiIds: + - "0a0faac0-bcbb-4d45-b673-d37ac6d3dc13" + requestTestNotification: true required: true responses: "200": @@ -982,7 +983,14 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/EventSubscriptionPatch' + $ref: '#/components/schemas/EventSubscription' + example: + notificationDestination: "http://my.callback.com/mec_capif_mgmt_ser_availabilities/some-id" + events: + - "SERVICE_API_UNAVAILABLE" + eventFilters: + - apiIds: + - "0a0faac0-bcbb-4d45-b673-d37ac6d3dc13" required: true responses: "200": -- GitLab From b3d47db7e6814546bb6f7c5925a72c490ee7d2fd Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 26 Sep 2024 15:37:10 +0200 Subject: [PATCH 38/58] Editorial changes --- config/.meepctl-repocfg.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index e50dad7..1173aa7 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -38,7 +38,7 @@ repo: # platform ingress configuration ingress: # host name - host: mec-platform.etsi.org + host: mec-platform2.etsi.org # enable https only (redirect http requests to https port) https-only: true # bind to host ports (true) or node ports (false) @@ -68,18 +68,18 @@ repo: github: # enable GitHub OAuth enabled: true - # device authorization url + # device authorization url for mec-sandbox-api device-auth-url: https://github.com/login/device/code - # device polling url + # authorization url for mec-sandbox-api device-poll-url: https://github.com/login/oauth/access_token + # device polling url + poll-url: https://github.com/login/oauth/access_token # authorization url auth-url: https://github.com/login/device/code - # polling url - poll-url: https://github.com/login/oauth/access_token # access token url token-url: https://github.com/login/oauth/access_token # OAuth redirect URI - redirect-uri: https://mec-platform.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://mec-platform2.etsi.org/platform-ctrl/v1/authorize # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-github # GitLab OAuth provider config @@ -91,7 +91,7 @@ repo: # access token url token-url: https://forge.etsi.org/rep/oauth/token # OAuth redirect URI - redirect-uri: https://mec-platform.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://mec-platform2.etsi.org/platform-ctrl/v1/authorize # GitLab api url api-url: https://forge.etsi.org/rep/api/v4 # OAuth k8s secret (data: client-id, secret) @@ -120,7 +120,7 @@ repo: # prometheus environment (dev|prod) promenv: prod # unique deployment identifier - replica: 172.29.10.52 + replica: 172.29.10.56 # Thanos long-term storage thanos: # enable Thanos -- GitLab From 99c90b24c9e9290966db8e4ebd3140f454a37f27 Mon Sep 17 00:00:00 2001 From: garciay Date: Mon, 7 Oct 2024 16:47:12 +0200 Subject: [PATCH 39/58] Add additional explanation on using MEC040; Moving to verdion 1.10.0 --- config/.meepctl-repocfg.yaml | 2 +- .../frontend/src/js/containers/home/home-page-container.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 1173aa7..1a17d5b 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -version: 1.9.0 +version: 1.10.0 repo: name: AdvantEDGE diff --git a/js-apps/frontend/src/js/containers/home/home-page-container.js b/js-apps/frontend/src/js/containers/home/home-page-container.js index 026e976..97993eb 100644 --- a/js-apps/frontend/src/js/containers/home/home-page-container.js +++ b/js-apps/frontend/src/js/containers/home/home-page-container.js @@ -75,6 +75,12 @@ class HomePageContainer extends Component { Such contextual information can offer significant differential performance for edge based MEC applications. MEC Sandbox also provides the support of capabilities described by Edge Platform Application Enablement (MEC011) and Device Application Interface (MEC016).

+

+ Important Note: If MEC Federation Service API (MEC040) is used (e.g. by activation 4g-5g-wifi-macro-v2x-fed network scenarion), MEC services and + MEC applications will be visible from other MEC Platform using also MEC Federation Service API (MEC040). + If you choose to use MEC Federation Service API (MEC040), you accept to establish MEC federation between two partners as specified in ETSI GS MEC 040 V3.2.1 (2024-03) Clause 5.2.4.1 Introduction. + +

Users can use the MEC Sandbox API to develop their own MEC applications to access and use the live MEC APIs running an instance of the MEC Sandbox. The demo6 example illustrates how to use the MEC Sandbox API. -- GitLab From bfefda152a337a4560081e343952da3c61d1411d Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 9 Oct 2024 12:24:19 +0200 Subject: [PATCH 40/58] Create a KML version of grid_map.yaml file --- config/api/vis-api.yaml | 9 +- config/grid_map/grid_map.kml | 3113 ++++++++++++++++++++++++++++++++++ 2 files changed, 3121 insertions(+), 1 deletion(-) create mode 100644 config/grid_map/grid_map.kml diff --git a/config/api/vis-api.yaml b/config/api/vis-api.yaml index c7d5edc..a4585ee 100644 --- a/config/api/vis-api.yaml +++ b/config/api/vis-api.yaml @@ -11,7 +11,7 @@ info: url: https://forge.etsi.org/legal-matters version: 3.2.2 externalDocs: - description: "ETSI GS MEC 030 V2X Information Services API, v3.1.1" + description: "ETSI GS MEC 030 V2X Information Services API, v3.2.1" url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/030/03.02.01_60/ servers: - url: https://localhost/sandboxname/vis/v2 @@ -2799,9 +2799,16 @@ components: Stream: minItems: 1 required: + - streamId - qosKpi type: object properties: + streamId: + type: string + description: "The identifier of a specific data stream. In case of 3GPP \ + \ network, this is mapped to a QoS flow" + x-etsi-mec-cardinality: "1" + x-etsi-mec-origin-type: String qosKpi: type: array items: diff --git a/config/grid_map/grid_map.kml b/config/grid_map/grid_map.kml new file mode 100644 index 0000000..c79c2e3 --- /dev/null +++ b/config/grid_map/grid_map.kml @@ -0,0 +1,3113 @@ + + + + KML Samples + 1 + MEC Sandbox grid map for V2X Predicted QoS + + + + + + + + + + + + normal + #__managed_style_164790AC5433A5EC62A0 + + + highlight + #__managed_style_2B6DB6F09833A5EC62A0 + + + + + + + + normal + #__managed_style_15FE54E51433A627B563 + + + highlight + #__managed_style_2FF57D309E33A627B563 + + + + + + + + + + + normal + #__managed_style_1BFC23CFD633A61BD679 + + + highlight + #__managed_style_23A16BBBC233A61BD679 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412251950392685,43.72791692204446,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412174768310321,43.72811929230551,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412082168640928,43.72832328456246,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412258292114533,43.72868578535503,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412667104878034,43.72951071398454,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41293395269218,43.73001857084243,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.413909436236601,43.7303324779033,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.414845099169913,43.73085772186122,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415686272521507,43.73140827154441,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417035715607321,43.73150376752979,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41811951280293,43.73125813101358,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.418496582896259,43.73105428551223,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417434617206712,43.7303285305292,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41761612246052,43.72994506278113,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.418475552736686,43.73002455487853,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.418583628695767,43.72901665897288,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419206675548777,43.72905121172964,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419276724805592,43.72859252750181,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.421163717704948,43.72867443423857,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.421329630272973,43.72830199194946,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.421491550303836,43.72803665703435,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.421782477046712,43.7277717542315,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.422214271916112,43.72747620627226,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.422504565367829,43.72723219488084,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420680151271053,43.7261019149033,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41861879465773,43.72467460835772,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417217361608561,43.72534442567208,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415396051104368,43.72626835861559,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.413504901522874,43.72721718804736,0 + + + + residential + fontvieille + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412251950392685,43.72791692204446,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412251950000019,43.72791691999998,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.411804027225728,43.72816131012375,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.410720479921626,43.72869765990779,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.409766648242966,43.72922566662531,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.408977429067094,43.72955314039889,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.409459702810654,43.73009170062428,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41079280207825,43.73123211336428,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.411498167531976,43.73156030213696,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.411981155210787,43.73165154471924,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412869529259951,43.73174631793645,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.413103672228885,43.73285905697139,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412628412999993,43.73348784000001,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412631065999973,43.73365316000002,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412836050000027,43.73390495000003,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412263138000026,43.73433529999998,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41232007199998,43.73447780000002,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41272860800001,43.73490302,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.414536576000001,43.73596065999998,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.414790898000021,43.73593182999998,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415021658000009,43.73579005000001,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415204773000013,43.73563441,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415460622999999,43.73559658999999,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415375119999998,43.73542449999998,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415019677000005,43.73510931,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415505957999993,43.73499287,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415866061000012,43.73534442999998,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.416066182000023,43.73524041000002,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.416378377999995,43.73509695000001,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.416259374182514,43.73439937025293,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417151421038497,43.73438386838809,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417564606186713,43.73358803210659,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.416856147336349,43.73251603862495,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415686273000004,43.73140827000001,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.414845098999989,43.73085772000002,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.41390943600003,43.73033248,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412933952999974,43.73001857000001,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412667104999997,43.72951071,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412258291999985,43.72868578999997,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412082169,43.72832327999999,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412174767999988,43.72811928999998,0 + + + + residential + jardin-exotique + #__managed_style_0A8A9AD2A133A61BD679 + + 7.412251950000019,43.72791691999998,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417564606186713,43.73358803210659,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417151421038497,43.73438386838809,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.416259374182514,43.73439937025293,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.416378377999995,43.73509695000001,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.416066182000023,43.73524041000002,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415866061000012,43.73534442999998,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415505957999993,43.73499287,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415019677000005,43.73510931,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415375119999998,43.73542449999998,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415460622999999,43.73559658999999,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415204773000013,43.73563441,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415021658000009,43.73579005000001,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.414790898000021,43.73593182999998,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.414536576000001,43.73596065999998,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.415512495190002,43.7366281498032,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417332072341214,43.73771758368893,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.418873230204741,43.73877571241193,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419142110422192,43.73847712514304,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419021090393514,43.73811417743455,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419190679523593,43.7378587827692,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419850585061147,43.73757228474087,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420399074406829,43.73760555882292,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420457413890754,43.73725619517442,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420333798401728,43.73716498791435,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420396504373983,43.73684132416717,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.418478149857243,43.73523598789635,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.418202862931748,43.73477086158007,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.418225296647933,43.73449931632479,0 + + + + residential + les-moneghetti + #__managed_style_0A8A9AD2A133A61BD679 + + 7.417564606186713,43.73358803210659,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419443319956787,43.73918172628623,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420711067059981,43.74010724828849,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420983066374093,43.74041731339866,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.422164563921272,43.74145159604973,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.422365660410213,43.74139317947643,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.422963231149204,43.74172088958904,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.424454433151444,43.74095922695706,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.425063636322633,43.74156588737877,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.425285892895499,43.74144445673576,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.424865442317685,43.74080338646932,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.425613023495128,43.74045279287922,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.424941293434653,43.73944198020815,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.424395101398494,43.73848096939489,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.423929644670732,43.73805215414122,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.423231978803315,43.73777774943043,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.42221285778588,43.73780232282162,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.422015508723327,43.73778671960322,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.422389180165956,43.73757439549585,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.421474633387888,43.73735181273111,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.421120041137305,43.73753064467809,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.421060732428161,43.73768154109923,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420845094753505,43.73768028156472,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420834807360008,43.73832173525869,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.420237980909308,43.73878391054415,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419683665481549,43.73883072227395,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419744559019701,43.73908342955649,0 + + + + residential + monte-carlo-residential + #__managed_style_0A8A9AD2A133A61BD679 + + 7.419443319956787,43.73918172628623,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418496582999996,43.73105429000002,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418119513000012,43.73125813000001,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.417035715999987,43.73150377000003,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.417801369901946,43.73185473282849,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418584870898128,43.73219944105407,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.41894602891624,43.73247754691842,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.419518816143889,43.73234860360077,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420266731735728,43.73216882154254,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420675309267695,43.73206553612534,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.421452309732304,43.73190764162803,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422101110512265,43.73184404705347,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.423140834328907,43.73192377454985,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.424047577614303,43.7320563652538,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.425024569979013,43.73221910461157,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.426346364587159,43.73243408313061,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.427069735704325,43.73259121517835,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.427018687669246,43.7328563012876,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.427387604873992,43.73294215353545,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.427618602663808,43.73298365486792,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.42776926194308,43.73316320459038,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.427853246747372,43.73324229998455,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428018540822499,43.7332520054401,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428053072302474,43.73324868304703,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.42804388704374,43.73321951005548,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428157779465874,43.73320226453772,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428184633997812,43.73315114504467,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428173864894223,43.73300777874597,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428472513453945,43.73288785590012,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428340523264967,43.73240940190094,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428355260733552,43.7320638817348,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428052465635798,43.73183164547587,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.427719754216082,43.73126147430344,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.426791008264177,43.73050535738137,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.426140051754682,43.73059151647244,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.425422876643704,43.73013799032908,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.424569817414428,43.72959358275482,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.423973082002464,43.72925388225838,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.423253358018433,43.72951012971406,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422212030034432,43.72965249553761,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.421803319220919,43.7301342399201,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.4215757625905,43.73035387586872,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420850294302137,43.73005520723608,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420497749571428,43.72995749603205,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420256165533474,43.73023629378087,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.419449086174669,43.7308514985659,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418994657919904,43.73100689871077,0 + + + + commercial + monaco-ville + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418496582999996,43.73105429000002,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422504565000003,43.72723219,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422214272000005,43.72747621000001,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.421491549999999,43.72803665999997,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.421329629999991,43.72830198999998,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.421163718000012,43.72867443000003,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.419276724999997,43.72859253000001,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.419206675999996,43.72905120999999,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418583629000004,43.72901666000001,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418475553000015,43.73002454999999,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.417616122000008,43.72994506000001,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.417434616999978,43.73032852999999,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418496582999996,43.73105429000002,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.418994657919904,43.73100689871077,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.419449086174669,43.7308514985659,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420256165533474,43.73023629378087,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420497749571428,43.72995749603205,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.420850294302137,43.73005520723608,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.4215757625905,43.73035387586872,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.421803319220919,43.7301342399201,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422212030034432,43.72965249553761,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.423253358018433,43.72951012971406,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.423973082002464,43.72925388225838,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.42410389544898,43.72788678068092,0 + + + + commercial + port-de-fontvieille + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422504565000003,43.72723219,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422389180165956,43.73757439549585,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422015508723327,43.73778671960322,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.42221285778588,43.73780232282162,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.423231978803315,43.73777774943043,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.423929644670732,43.73805215414122,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.424395101398494,43.73848096939489,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.424941293434653,43.73944198020815,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.425613023495128,43.74045279287922,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.424865442317685,43.74080338646932,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.425285892895499,43.74144445673576,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.425828559830128,43.74187221007835,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.426106032131104,43.74224063802686,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.426658721175235,43.74266479460832,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.426896633526874,43.7431731275049,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.42803338219397,43.74396886604708,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428124635598623,43.7446129050683,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428583886490758,43.74552649069036,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428656333382304,43.74601167227261,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429392567861366,43.74598470406469,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.43019908502442,43.74636070222755,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430184824695862,43.74614711009478,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430041124596382,43.74587385687351,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430753592681651,43.74556027044869,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429606399867128,43.74462926967613,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428919084493753,43.74330607140439,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428472384727456,43.74215146410698,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428348136794614,43.74184188200886,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428045585745659,43.74156225878901,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428825052252918,43.74116848731372,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429136345726417,43.74099696525549,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429195694861344,43.74068140305448,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429711928682434,43.74035844243281,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430065086087994,43.74050878245765,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430434900666974,43.74034907418406,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430778838593892,43.74009471674051,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430384009548674,43.73886676523743,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.43022855005086,43.73820539045028,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429532505751562,43.73764671224635,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428878098113083,43.73865563528157,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.427662318340127,43.7379168624471,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.426230067309811,43.73761808075336,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.424453465789913,43.73740626769943,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422574970752851,43.73746434232518,0 + + + + commercial + monte-carlo-commercial + #__managed_style_0AAA7B0B1F33A627B563 + + 7.422389180165956,43.73757439549585,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428656333382304,43.74601167227261,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428722045447174,43.7461767820448,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428648594850229,43.74627290660531,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428783307585796,43.7466216757588,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429298023348787,43.74683410367367,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.42961314062544,43.74766541738203,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429786566745364,43.74808335116288,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430419415423007,43.74823987563861,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430672477144924,43.74896279035944,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.431773382431976,43.74883377927693,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.432308862640071,43.7490681523884,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.43316111345729,43.74937106151356,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.433725337090085,43.74978180687035,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.433943330463757,43.74963700122542,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.434841622546875,43.7498777721828,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.435290043812335,43.74994747731498,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.435960931770083,43.75000309948296,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.437439107288091,43.75113650953647,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.436779172106549,43.75154669043439,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.436858030829681,43.75192057309162,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.437391376350028,43.75182467783615,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.438374318142489,43.75150853061132,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.438685373240627,43.75122346946171,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.438738903210624,43.7508608724867,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.43867174315125,43.7504776030522,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.43862117599273,43.75003531970896,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.438273687506765,43.74961068461203,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.436738220838672,43.74901129042753,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.436477587521264,43.74900251993036,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.434169656874509,43.74783466027769,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.431783826666114,43.74643068462912,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430753592681651,43.74556027044869,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430041124596382,43.74587385687351,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.430184824695862,43.74614711009478,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.43019908502442,43.74636070222755,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.429392567861366,43.74598470406469,0 + + + + commercial + la-rousse + #__managed_style_0AAA7B0B1F33A627B563 + + 7.428656333382304,43.74601167227261,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.417151421038497,43.73438386838809,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.418225296647933,43.73449931632479,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.418202862931748,43.73477086158007,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.418478149857243,43.73523598789635,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420396504373983,43.73684132416717,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.421474633387888,43.73735181273111,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.422389180165956,43.73757439549585,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.422574970752851,43.73746434232518,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.424453465789913,43.73740626769943,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.426230067309811,43.73761808075336,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.427662318340127,43.7379168624471,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428038293652051,43.73810579370274,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428415582222376,43.73830218127022,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428878098113083,43.73865563528157,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.429532505751562,43.73764671224635,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.43177958793355,43.73684077032769,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.432454305187117,43.73631487190695,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428867685250811,43.73319793548649,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428472513453945,43.73288785590012,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428173864894223,43.73300777874597,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428184633997812,43.73315114504467,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428157779465874,43.73320226453772,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.42804388704374,43.73321951005548,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428053072302474,43.73324868304703,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428018540822499,43.7332520054401,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.427853246747372,43.73324229998455,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.42776926194308,43.73316320459038,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.427618602663808,43.73298365486792,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.427387604873992,43.73294215353545,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.427018687669246,43.7328563012876,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.427069735704325,43.73259121517835,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.426346364587159,43.73243408313061,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.425024569979013,43.73221910461157,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.424047577614303,43.7320563652538,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.423140834328907,43.73192377454985,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.422101110512265,43.73184404705347,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.421452309732304,43.73190764162803,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420675309267695,43.73206553612534,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420266731735728,43.73216882154254,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419518816143889,43.73234860360077,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.41894602891624,43.73247754691842,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.418584870898128,43.73219944105407,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.417801369901946,43.73185473282849,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.417035715999987,43.73150377000003,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.415686273000004,43.73140827000001,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.416856147336349,43.73251603862495,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.417564606186713,43.73358803210659,0 + + + + coastal + la-condamine + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.417151421038497,43.73438386838809,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420396504373983,43.73684132416717,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420333798401728,43.73716498791435,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420457413890754,43.73725619517442,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420399074406829,43.73760555882292,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419850585061147,43.73757228474087,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419190679523593,43.7378587827692,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419021090393514,43.73811417743455,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419142110422192,43.73847712514304,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.418873230204741,43.73877571241193,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419443319956787,43.73918172628623,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419744559019701,43.73908342955649,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.419683665481549,43.73883072227395,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420237980909308,43.73878391054415,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420834807360008,43.73832173525869,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420845094753505,43.73768028156472,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.421060732428161,43.73768154109923,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.421120041137305,43.73753064467809,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.421474633387888,43.73735181273111,0 + + + + coastal + ravin-de-sainte-devote + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.420396504373983,43.73684132416717,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.430858271494349,43.73961431812234,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.430778838593892,43.74009471674051,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.430434900666974,43.74034907418406,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.430065086087994,43.74050878245765,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.429711928682434,43.74035844243281,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.429195694861344,43.74068140305448,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.429136345726417,43.74099696525549,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428825052252918,43.74116848731372,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428045585745659,43.74156225878901,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428348136794614,43.74184188200886,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428472384727456,43.74215146410698,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.428919084493753,43.74330607140439,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.429606399867128,43.74462926967613,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.430753592681651,43.74556027044869,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.431783826666114,43.74643068462912,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.434169656874509,43.74783466027769,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.436477587521264,43.74900251993036,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.436738220838672,43.74901129042753,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.438273687506765,43.74961068461203,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.43862117599273,43.75003531970896,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.439238468871643,43.74927471683961,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.439732881877939,43.74838219752311,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.439933293586867,43.7464977152092,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.437950022030025,43.74612598069747,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.432984972294214,43.74424091282706,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.434031120177556,43.74238402666636,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.432899625820466,43.7412625274158,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.431666316590344,43.73948829860639,0 + + + + coastal + larvotto + #__managed_style_0FD2FC8D5A33A5EC62A0 + + 7.430858271494349,43.73961431812234,0 + + + + -- GitLab From 3d805b6065f3428feea8dcc0bb810350062cf8dd Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Wed, 16 Oct 2024 08:26:09 +0000 Subject: [PATCH 41/58] Update request body of PATCH method of resource Published service API --- config/api/capif-mgmt.yaml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/config/api/capif-mgmt.yaml b/config/api/capif-mgmt.yaml index 36ff8a9..56ca967 100644 --- a/config/api/capif-mgmt.yaml +++ b/config/api/capif-mgmt.yaml @@ -627,6 +627,21 @@ paths: schema: $ref: '#/components/schemas/ServiceAPIDescription' example: + aefProfiles: + - aefId: "sandboxTransport" + versions: + - "3.1.1" + interfaceDescriptions: + uris: + - "http://my.callback.com/sbx2cmq8bn/mep1/vis/v2/" + fqdn: null + addresses: null + alternative: null + vendorSpecific-urn:etsi:mec:capifext:transport-info: + name: "REST" + type: "REST_HTTP" + protocol: "HTTP" + version: "2.0" vendorSpecific-urn:etsi:mec:capifext:service-info: serializer: "JSON" state: "ACTIVE" -- GitLab From 77fff2616846d34f3a1db16be75ea04f6e3a4892 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Wed, 30 Oct 2024 07:49:01 +0000 Subject: [PATCH 42/58] Add request body examples for registration resource --- config/api/app-support.yaml | 193 ++++++++++++++++++++++++++++++++++-- 1 file changed, 183 insertions(+), 10 deletions(-) diff --git a/config/api/app-support.yaml b/config/api/app-support.yaml index fb7bb25..8aa6e9f 100644 --- a/config/api/app-support.yaml +++ b/config/api/app-support.yaml @@ -1067,9 +1067,9 @@ paths: - mec_app_support summary: Register the MEC application instance to the MEC platform description: >- - The POST method may be used by the MEC application instance to request its registration to the MEC platform. + The POST method may be used by the MEC application instance to request its registration to the MEC platform. operationId: ApplicationsRegistrations_POST - parameters: [] + parameters: [] requestBody: description: >- The message content in the request contains the profile of the MEC application instance, calling the MEC platform to register the MEC application instance. @@ -1077,7 +1077,96 @@ paths: application/json: schema: $ref: '#/components/schemas/AppInfo' - required: false + example: + appName: "appName" + appProvider: "appProvider1" + appCategory: + href: "/example/catalogue1" + id: "id12345" + name: "RNI" + version: "version1" + appDId: "TODO" + appInstanceId: "ID1" + endpoint: + uris: + - "mecAppSuptApi/example" + appServiceRequired: + - requestedPermissions: "string" + serCategory: + href: "/example/catalogue1" + id: "id12345" + name: "RNI" + version: "version1" + serName: "string" + serTransportDependencies: + - labels: + - "string" + serializers: + - "JSON" + transport: + protocol: "string" + security: + oAuth2Info: + grantTypes: + - "OAUTH2_CLIENT_CREDENTIALS" + tokenEndpoint: "/mecSerMgmtApi/security/TokenEndPoint" + type: "REST_HTTP" + version: "string" + version: "string" + appServiceOptional: + - requestedPermissions: "string" + serCategory: + href: "/example/catalogue1" + id: "id12345" + name: "RNI" + version: "version1" + serName: "string" + serTransportDependencies: + - labels: + - "string" + serializers: + - "JSON" + transport: + protocol: "string" + security: + oAuth2Info: + grantTypes: + - "OAUTH2_CLIENT_CREDENTIALS" + tokenEndpoint: "/mecSerMgmtApi/security/TokenEndPoint" + type: "REST_HTTP" + version: "string" + version: "string" + appFeatureRequired: + - featureName: "string" + version: "string" + appFeatureOptional: + - featureName: "string" + version: "string" + isInsByMec: false + appProfile: + easId: "appName" + endPt: + uris: + - "string" + acIds: + - "string" + provId: "appProvider1" + type: "string" + scheds: + - "string" + svcArea: "string" + svcKpi: "string" + permLvl: + - "string" + easFeats: + - "string" + svcContSupp: + - "string" + appLocs: + - "string" + avlRep: 1577836800 + status: "string" + required: true responses: '201': description: >- @@ -1097,7 +1186,6 @@ paths: '400': description: >- Bad Request. It is used to indicate that incorrect parameters were passed to the request. - headers: {} content: application/problem+json: schema: @@ -1109,7 +1197,6 @@ paths: '401': description: >- Unauthorized. It is used when the client did not submit the appropriate credentials. - headers: {} content: application/problem+json: schema: @@ -1121,15 +1208,13 @@ paths: '403': description: >- Forbidden. The operation is not allowed given the current status of the resource. - headers: {} content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' '404': description: >- - Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. - headers: {} + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. content: application/problem+json: schema: @@ -1138,8 +1223,7 @@ paths: schema: type: object description: Empty schema - deprecated: false - parameters: [] + deprecated: false /registrations/{appInstanceId}: get: tags: @@ -1222,6 +1306,95 @@ paths: application/json: schema: $ref: '#/components/schemas/AppInfo' + example: + appName: "appName" + appProvider: "appProvider1" + appCategory: + href: "/example/catalogue1" + id: "id12345" + name: "RNI" + version: "version1" + appDId: "TODO" + appInstanceId: "ID1" + endpoint: + uris: + - "mecAppSuptApi/example" + appServiceRequired: + - requestedPermissions: "string" + serCategory: + href: "/example/catalogue1" + id: "id12345" + name: "RNI" + version: "version1" + serName: "string" + serTransportDependencies: + - labels: + - "string" + serializers: + - "JSON" + transport: + protocol: "string" + security: + oAuth2Info: + grantTypes: + - "OAUTH2_CLIENT_CREDENTIALS" + tokenEndpoint: "/mecSerMgmtApi/security/TokenEndPoint" + type: "REST_HTTP" + version: "string" + version: "string" + appServiceOptional: + - requestedPermissions: "string" + serCategory: + href: "/example/catalogue1" + id: "id12345" + name: "RNI" + version: "version1" + serName: "string" + serTransportDependencies: + - labels: + - "string" + serializers: + - "JSON" + transport: + protocol: "string" + security: + oAuth2Info: + grantTypes: + - "OAUTH2_CLIENT_CREDENTIALS" + tokenEndpoint: "/mecSerMgmtApi/security/TokenEndPoint" + type: "REST_HTTP" + version: "string" + version: "string" + appFeatureRequired: + - featureName: "string" + version: "string" + appFeatureOptional: + - featureName: "string" + version: "string" + isInsByMec: false + appProfile: + easId: "appName" + endPt: + uris: + - "string" + acIds: + - "string" + provId: "appProvider1" + type: "string" + scheds: + - "string" + svcArea: "string" + svcKpi: "string" + permLvl: + - "string" + easFeats: + - "string" + svcContSupp: + - "string" + appLocs: + - "string" + avlRep: 1577836800 + status: "string" required: true responses: '204': -- GitLab From e7b2f7f7b6aa9291bdf42293c8397e0fbe9802f6 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Wed, 6 Nov 2024 09:38:08 +0000 Subject: [PATCH 43/58] Updated query parameter descriptions with examples and removed examples from schemas --- build.sh | 2 +- config/api/capif-mgmt.yaml | 87 +++++++++++++++++++------------------- deploy.sh | 2 +- 3 files changed, 46 insertions(+), 45 deletions(-) diff --git a/build.sh b/build.sh index da9fc7a..2f69bca 100755 --- a/build.sh +++ b/build.sh @@ -4,7 +4,7 @@ SCRIPT=$(readlink -f "$0") BASEDIR=$(dirname "$SCRIPT") -MEEPDIR=~/AdvantEDGE +MEEPDIR=~/etsi-mec-sandbox install_package() { echo "" diff --git a/config/api/capif-mgmt.yaml b/config/api/capif-mgmt.yaml index 56ca967..d823b21 100644 --- a/config/api/capif-mgmt.yaml +++ b/config/api/capif-mgmt.yaml @@ -29,26 +29,28 @@ paths: get: tags: - services - description: This method retrieves information about a list of mecService resources. - This method is typically used in "service availability query" procedure + description: | + This method retrieves information about a list of mecService resources. + This method is typically used in the "service availability query" procedure. + **Example:** Retrieve all available services with specific parameters for filtering. operationId: Services_GET parameters: - name: vend-spec-etsi-mec-serinstance-id in: query - description: Vendor-specific query parameter for service instance ID. The - "target" attribute shall be set to "/apiId". + description: | + Vendor-specific query parameter for service instance ID. The "target" attribute shall be set to "/apiId". + **Example:** {\"target\": \"/apiId\", \"value\": \"serviceInstanceId\"} required: false style: form explode: true schema: type: string - example: "{\"target\": \"/apiId\", \"value\": \"serviceInstanceId\"}" - name: api-name in: query - description: "This query parameter corresponds to the parameter \"ser_name\"\ - \ as defined in clause 8.2.3.3.1. As opposed to the cardinality of ser_instance_id\ - \ defined in clause 8.2.3.3.1 that is 0..N, this parameter only supports\ - \ a cardinality of 0..1." + description: | + This query parameter corresponds to the parameter "ser_name" as defined in clause 8.2.3.3.1. + As opposed to the cardinality of ser_instance_id defined in clause 8.2.3.3.1 that is 0..N, this parameter only supports a cardinality of 0..1. + **Example:** ["ServiceName1"] required: false style: form explode: true @@ -58,11 +60,10 @@ paths: type: string - name: api-invoker-id in: query - description: "If the Discover_Service_API is produced by the MEC platform\ - \ towards the MEC applications, this identifier shall be set to the value\ - \ of the \"appInstanceId\" (see clause 7.1.2.6). If the Discover_Service_API\ - \ is produced by the CCF, the provisions in clause 8.1.2.2.3.1 of 3GPP TS\ - \ 29.222 [21] apply. " + description: | + If the Discover_Service_API is produced by the MEC platform towards the MEC applications, this identifier shall be set to the value of the "appInstanceId" (see clause 7.1.2.6). + If the Discover_Service_API is produced by the CCF, the provisions in clause 8.1.2.2.3.1 of 3GPP TS 29.222 [21] apply. + **Example:** "InvokerAppInstanceId" required: false style: form explode: true @@ -70,52 +71,49 @@ paths: type: string - name: vend-spec-etsi-mec-sercategory-id in: query - description: Vendor-specific query parameter for service category ID. The - "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id". + description: | + Vendor-specific query parameter for service category ID. The "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id". + **Example:** {\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id\", \"value\": \"serviceCategoryId\"} required: false style: form explode: true schema: type: string - example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/serCategory/id\"\ - , \"value\": \"serviceCategoryId\"}" - name: vend-spec-etsi-mec-consumed-local-only in: query - description: Vendor-specific query parameter for consumed local only. The - "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly". + description: | + Vendor-specific query parameter for consumed local only. The "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly". + **Example:** {\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly\", \"value\": \"true\"} required: false style: form explode: true schema: type: string - example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/consumedLocalOnly\"\ - , \"value\": \"true\"}" - name: vend-spec-etsi-mec-is-local in: query - description: Vendor-specific query parameter for is local. The "target" attribute - shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal". + description: | + Vendor-specific query parameter for is local. The "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal". + **Example:** {\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal\", \"value\": \"true\"} required: false style: form explode: true schema: type: string - example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/isLocal\"\ - , \"value\": \"true\"}" - name: vend-spec-etsi-mec-scope-of-locality in: query - description: Vendor-specific query parameter for scope of locality. The "target" - attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality". + description: | + Vendor-specific query parameter for scope of locality. The "target" attribute shall be set to "/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality". + **Example:** {\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality\", \"value\": \"scopeOfLocalityValue\"} required: false style: form explode: true schema: type: string - example: "{\"target\": \"/vendorSpecific-urn:etsi:mec:capifext:service-info/scopeOfLocality\"\ - , \"value\": \"scopeOfLocalityValue\"}" responses: "200": description: | The response body contains the result of the search over the list of registered APIs. + **Example:** JSON array of discovered APIs with details like "apiId", "serName", "scopeOfLocality", etc. content: application/json: schema: @@ -123,10 +121,10 @@ paths: "307": description: | Temporary redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + **Example:** "https://alternative-ccf.example.com/resource" headers: Location: - description: Contains an alternative target URI of the resource located - in an alternative CCF. + description: Contains an alternative target URI of the resource located in an alternative CCF. style: simple explode: false schema: @@ -134,39 +132,42 @@ paths: "308": description: | Permanent redirection. The response shall include a Location header field containing an alternative target URI of the resource located in an alternative CCF. + **Example:** "https://permanent-ccf.example.com/resource" headers: Location: - description: Contains an alternative target URI of the resource located - in an alternative CCF. + description: Contains an alternative target URI of the resource located in an alternative CCF. style: simple explode: false schema: type: string "400": - description: Bad Request. It is used to indicate that incorrect parameters - were passed to the request. + description: | + Bad Request. It is used to indicate that incorrect parameters were passed to the request. + **Example:** Invalid "vend-spec-etsi-mec-serinstance-id" format. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "403": - description: Forbidden. The operation is not allowed given the current status - of the resource. + description: | + Forbidden. The operation is not allowed given the current status of the resource. + **Example:** Access restricted to registered users only. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "404": - description: Not Found. It is used when a client provided a URI that cannot - be mapped to a valid resource URI. + description: | + Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI. + **Example:** Non-existent service identifier provided in the URI. content: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' "414": - description: It is used to indicate that the server is refusing to process - the request because the request URI is longer than the server is willing - or able to process. + description: | + Request URI Too Long. Indicates that the server is refusing to process the request because the URI is too long. + **Example:** Excessive query parameters length in the request URI. content: application/problem+json: schema: diff --git a/deploy.sh b/deploy.sh index f8a873b..dc26119 100755 --- a/deploy.sh +++ b/deploy.sh @@ -4,7 +4,7 @@ SCRIPT=$(readlink -f "$0") BASEDIR=$(dirname "$SCRIPT") -MEEPDIR=~/AdvantEDGE +MEEPDIR=~/etsi-mec-sandbox CONFIGDIR=$MEEPDIR/config DASHBOARDDIR=$MEEPDIR/charts/grafana/dashboards APIDIR=$MEEPDIR/config/api -- GitLab From bee3fbe84b8538f83b41b9496741cea3e6edc98b Mon Sep 17 00:00:00 2001 From: garciay Date: Wed, 6 Nov 2024 14:47:53 +0100 Subject: [PATCH 44/58] Resolve issues after merging STF678_Task3 into STF678_Task4 --- .../src/js/containers/sandbox/api-table.js | 3 ++ .../frontend/src/js/util/scenario-utils.js | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/js-apps/frontend/src/js/containers/sandbox/api-table.js b/js-apps/frontend/src/js/containers/sandbox/api-table.js index 5e4fddc..5c805d9 100644 --- a/js-apps/frontend/src/js/containers/sandbox/api-table.js +++ b/js-apps/frontend/src/js/containers/sandbox/api-table.js @@ -146,6 +146,9 @@ class ApiTable extends Component { case 'meep-vis': prefixStd = '030'; break; + case 'meep-federation': + prefixStd = '040'; + break; default: prefixStd = 'N/A'; } diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index ec0daa0..ed0f24d 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -656,6 +656,40 @@ export function parseEdgeApps(scenario) { enableInProgressCount: -1, disableInProgressCount: -1 }); + // MEC016 + } else if (proc.image.includes('meep-dai')) { + edgeApps.push({ + id: proc.id, + name: proc.name, + instance: '', + img: proc.image, + mepName: pl.name, + env: proc.environment, + url: 'api/?urls.primaryName='+pl.name+'%20-%20Device%20Application%20Interface%20REST%20API', + path: pl.name+'/dev_app/v1', + pseudoName: 'Device Application Interface (016) on ' + pl.name, + dropDownName: 'Device Application Interface (016)', + enabled: true, + enableInProgressCount: -1, + disableInProgressCount: -1 + }); + // MEC040 + } else if (proc.image.includes('meep-federation')) { + edgeApps.push({ + id: proc.id, + name: proc.name, + instance: '', + img: proc.image, + mepName: pl.name, + env: proc.environment, + url: 'api/?urls.primaryName='+pl.name+'%20-%20Federation%20Service%20REST%20API', + path: pl.name+'/fed_enablement/v1', + pseudoName: 'MEC Federation APIs (040) on ' + pl.name, + dropDownName: 'MEC Federation APIs (040)', + enabled: true, + enableInProgressCount: -1, + disableInProgressCount: -1 + }); } } } -- GitLab From 8d081872c5d5031faef91851978ca5430258d8e0 Mon Sep 17 00:00:00 2001 From: garciay Date: Thu, 7 Nov 2024 08:08:03 +0100 Subject: [PATCH 45/58] Add text for CAPIF support into the Help page and the Welcome page --- js-apps/frontend/src/js/components/dialogs/version-dialog.js | 1 + .../frontend/src/js/containers/home/home-page-container.js | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/js-apps/frontend/src/js/components/dialogs/version-dialog.js b/js-apps/frontend/src/js/components/dialogs/version-dialog.js index be344ad..dc2c6e7 100644 --- a/js-apps/frontend/src/js/components/dialogs/version-dialog.js +++ b/js-apps/frontend/src/js/components/dialogs/version-dialog.js @@ -29,6 +29,7 @@ class VersionDialog extends Component {

  • MEC Federation Service API support
  • MEC Sandbox API for command line support
  • +
  • Support of Edge Native Connector (3GPP TS 29.222: 3rd Generation Partnership Project; Technical Specification Group Core Network and Terminals; Common API Framework for 3GPP Northbound APIs)
  • General maintenance fixes
diff --git a/js-apps/frontend/src/js/containers/home/home-page-container.js b/js-apps/frontend/src/js/containers/home/home-page-container.js index 97993eb..e17c8cd 100644 --- a/js-apps/frontend/src/js/containers/home/home-page-container.js +++ b/js-apps/frontend/src/js/containers/home/home-page-container.js @@ -72,6 +72,10 @@ class HomePageContainer extends Component { hands-on experience on the behaviour and capabilities of the Location (MEC013), Radio Network Information (MEC012), Traffic Management APIs (MEC015), Application Mobility (MEC021), WLAN Information (MEC028) and V2X Information API (MEC030) service API and MEC Federation Service API (MEC040) service APIs. + MEC Sandbox provides also a support for Edge Native Connector (3GPP TS 29.222: 3rd Generation Partnership Project; Technical Specification Group Core + Network and Terminals; Common API Framework for 3GPP Northbound APIs). +

+

Such contextual information can offer significant differential performance for edge based MEC applications. MEC Sandbox also provides the support of capabilities described by Edge Platform Application Enablement (MEC011) and Device Application Interface (MEC016).

-- GitLab From b2f51514ae3011bc9128de8f680f09b9979f2f37 Mon Sep 17 00:00:00 2001 From: garciay Date: Sat, 9 Nov 2024 11:51:22 +0100 Subject: [PATCH 46/58] Add MEC 016 support --- js-apps/frontend/src/js/containers/home/home-page-container.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js-apps/frontend/src/js/containers/home/home-page-container.js b/js-apps/frontend/src/js/containers/home/home-page-container.js index e17c8cd..ac7623f 100644 --- a/js-apps/frontend/src/js/containers/home/home-page-container.js +++ b/js-apps/frontend/src/js/containers/home/home-page-container.js @@ -70,7 +70,7 @@ class HomePageContainer extends Component { MEC Sandbox provides the user with a choice of scenarios combining different network technologies (4G, 5G, Wi-Fi, MEC Federation) and terminal types. Combining these assets in a geolocated environment, a user can gain hands-on experience on the behaviour and capabilities of the Location (MEC013), Radio Network - Information (MEC012), Traffic Management APIs (MEC015), Application Mobility (MEC021), WLAN Information (MEC028) and + Information (MEC012), Traffic Management APIs (MEC015), Device application interface (MEC016), Application Mobility (MEC021), WLAN Information (MEC028) and V2X Information API (MEC030) service API and MEC Federation Service API (MEC040) service APIs. MEC Sandbox provides also a support for Edge Native Connector (3GPP TS 29.222: 3rd Generation Partnership Project; Technical Specification Group Core Network and Terminals; Common API Framework for 3GPP Northbound APIs). -- GitLab From c5f7596a3a8ae2ba22bad880267f5117d2622356 Mon Sep 17 00:00:00 2001 From: garciay Date: Sat, 9 Nov 2024 11:51:36 +0100 Subject: [PATCH 47/58] Add MEC 016 support --- config/api/dai-api.yaml | 156 +--------------------------------------- 1 file changed, 3 insertions(+), 153 deletions(-) diff --git a/config/api/dai-api.yaml b/config/api/dai-api.yaml index 4fde5cc..b911f57 100644 --- a/config/api/dai-api.yaml +++ b/config/api/dai-api.yaml @@ -7,10 +7,10 @@ info: license: name: BSD-3-Clause url: https://forge.etsi.org/legal-matters - version: 2.2.1 + version: 3.1.1 externalDocs: - description: ETSI GS MEC016 V2.2.1 Device application interface - url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/016/02.02.01_60/gs_MEC016v020201p.pdf + description: ETSI GS MEC016 V3.1.1 Device application interface + url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/016/03.01.01_60/gs_mec016v030101p.pdf servers: - url: https://localhost/sandboxname/dev_app/v1 tags: @@ -353,88 +353,6 @@ paths: application/problem+json: schema: $ref: '#/components/schemas/ProblemDetails' - /subscriptions/{subscriptionId}: - post: - tags: - - app_term - summary: MEC011 Application Termination notification for self termination - description: Terminates itself. - operationId: mec011AppTerminationPOST - parameters: - - name: subscriptionId - in: path - description: "Refers to created subscription, where the VIS API allocates\ - \ a unique resource name for this subscription" - required: true - style: simple - explode: false - schema: - type: string - requestBody: - description: Termination notification details - content: - application/json: - schema: - $ref: '#/components/schemas/AppTerminationNotification' - example: - notificationType: AppTerminationNotification - operationAction: TERMINATING - maxGracefulTimeout: 10 - _links: - subscription: - href: http://mec011Server.example.com/mec_app_support/v2/applications/appId1234/subscriptions/sub123 - confirmTermination: - href: http://mec011Server.example.com/mec_app_support/v2/confirm_termination - required: true - responses: - "204": - description: No Content - x-swagger-router-controller: notifications - delete: - tags: - - unsupported - summary: Used to cancel the existing subscription. - description: Used to cancel the existing subscription. - operationId: individualSubscriptionDELETE - parameters: - - name: subscriptionId - in: path - description: "Refers to created subscription, where the VIS API allocates\ - \ a unique resource name for this subscription" - required: true - style: simple - explode: false - schema: - type: string - responses: - "204": - description: No Content - "401": - description: "Unauthorized : used when the client did not submit credentials." - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - "403": - description: "Forbidden : operation is not allowed given the current status\ - \ of the resource." - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - "404": - description: "Not Found : used when a client provided a URI that cannot\ - \ be mapped to a valid resource URI." - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' - "429": - description: "Too Many Requests : used when a rate limiter has triggered." - content: - application/json: - schema: - $ref: '#/components/schemas/ProblemDetails' components: schemas: AddressChangeNotification: @@ -943,70 +861,6 @@ components: format: uri x-etsi-mec-cardinality: 0..1 x-etsi-mec-origin-type: URI - Links: - required: - - self - type: object - properties: - self: - $ref: '#/components/schemas/LinkType' - description: Hyperlink related to the resource. This shall be only included - in the HTTP responses and in HTTP PUT requests. - x-etsi-mec-cardinality: 0..1 - x-etsi-mec-origin-type: Structure (inlined) - LinkType: - required: - - href - type: object - properties: - href: - type: string - description: URI referring to a resource - format: uri - x-etsi-mec-cardinality: "1" - x-etsi-mec-origin-type: Uri - example: - href: http://example.com/aeiou - x-etsi-ref: 6.5.13 - AppTerminationNotification: - required: - - _links - - maxGracefulTimeout - - notificationType - - operationAction - type: object - properties: - notificationType: - type: string - description: Shall be set to AppTerminationNotification. - operationAction: - $ref: '#/components/schemas/OperationActionType' - maxGracefulTimeout: - type: integer - description: Maximum timeout value in seconds for graceful termination or - graceful stop of an application instance. - format: uint32 - _links: - $ref: '#/components/schemas/AppTerminationNotification__links' - description: This type represents the information that the MEC platform notifies - the subscribed application instance about the corresponding application instance - termination/stop. - OperationActionType: - type: string - description: Operation that is being performed on the MEC application instance. - enum: - - STOPPING - - TERMINATING - AppTerminationNotification__links: - required: - - subscription - type: object - properties: - subscription: - $ref: '#/components/schemas/LinkType' - confirmTermination: - $ref: '#/components/schemas/LinkType' - description: Object containing hyperlinks related to the resource. AppContext_appInfo_userAppInstanceInfo: type: object properties: @@ -1115,7 +969,6 @@ components: $ref: '#/components/schemas/AppContext_appInfo_userAppInstanceInfo' x-etsi-mec-cardinality: 1..N x-etsi-mec-origin-type: array (Structure inlined) - description: "" example: appSoftVersion: appSoftVersion appDVersion: appDVersion @@ -1179,7 +1032,6 @@ components: format: uri x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: URI - example: null ApplicationList_appInfo_appCharcs: type: object properties: @@ -1292,7 +1144,6 @@ components: value shall not exceed 32 characters. x-etsi-mec-cardinality: "1" x-etsi-mec-origin-type: String - description: "" example: appCharcs: serviceCont: 5 @@ -1492,7 +1343,6 @@ components: $ref: '#/components/schemas/ApplicationLocationAvailability_appInfo_availableLocations' x-etsi-mec-cardinality: 0..N x-etsi-mec-origin-type: array (Structure (inline)) - description: "" example: appSoftVersion: appSoftVersion appDVersion: appDVersion -- GitLab From 7c870691dc539011d6377c102866f8682daba684 Mon Sep 17 00:00:00 2001 From: Umair Khan Date: Fri, 20 Dec 2024 06:13:01 +0000 Subject: [PATCH 48/58] update etsi mec sandbox mec 021 AMS front-end file as per 3.1.1 AMS document version --- config/api/ams-api.yaml | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/config/api/ams-api.yaml b/config/api/ams-api.yaml index 34c99b6..88a2798 100644 --- a/config/api/ams-api.yaml +++ b/config/api/ams-api.yaml @@ -1,10 +1,10 @@ openapi: 3.0.0 info: title: 'ETSI GS MEC 021 Application Mobility Service API' - version: 2.2.1 + version: 3.1.1 description: 'ETSI GS MEC 021 Application Mobility Service API described using OpenAPI. -

**Note**
MEC Sandbox supports a subset of AMS API endpoints; complete details on AMS API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/021/02.02.01_60/gs_mec021v020201p.pdf)' +

**Note**
MEC Sandbox supports a subset of AMS API endpoints; complete details on AMS API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/021/03.01.01_60/gs_mec021v030101p.pdf)' license: name: BSD-3-Clause url: 'https://forge.etsi.org/legal-matters' @@ -13,8 +13,8 @@ info: email: cti_support@etsi.org url: https://forge.etsi.org/rep/mec/gs021-amsi-api externalDocs: - description: 'ETSI GS MEC 021 Application Mobility Service API, v2.2.1' - url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/021/02.02.01_60/gs_mec021v020201p.pdf' + description: 'ETSI GS MEC 021 Application Mobility Service API, v3.1.1' + url: 'https://www.etsi.org/deliver/etsi_gs/MEC/001_099/021/03.01.01_60/gs_mec021v030101p.pdf' servers: - url: 'https://localhost/sandboxname/amsi/v1' tags: @@ -39,7 +39,7 @@ paths: explode: true schema: type: string - - name: all_fields + - name: All_fields in: query description: Include all complex attributes in the response. required: false @@ -47,7 +47,7 @@ paths: explode: true schema: type: string - - name: fields + - name: Fields in: query description: Complex attributes to be included into the response. See clause @@ -57,7 +57,7 @@ paths: explode: true schema: type: string - - name: exclude_fields + - name: Exclude_fields in: query description: Complex attributes to be excluded from the response.See clause @@ -67,7 +67,7 @@ paths: explode: true schema: type: string - - name: exclude_default + - name: Exclude_default in: query description: Indicates to exclude the following complex attributes from the @@ -147,46 +147,43 @@ paths: - name: filter in: query description: - Attribute-based filtering parameters according to ETSI GS MEC - 011 + Attribute-based filtering parameters, according to ETSI GS MEC 009, use the format (op,attr,value) required: false style: form explode: true schema: type: string - - name: all_fields + - name: All_fields in: query - description: Include all complex attributes in the response. + description: Include all complex attributes in the response.e.g., All_Fields. required: false style: form explode: true schema: type: string - - name: fields + - name: Fields in: query description: - Complex attributes to be included into the response. See clause - 6.18 in ETSI GS MEC 011 + Complex attributes to be included in the response (see Clause 6.18 in ETSI GS MEC 009), e.g., att or att/subatt. required: false style: form explode: true schema: type: string - - name: exclude_fields + - name: Exclude_fields in: query description: - Complex attributes to be excluded from the response.See clause - 6.18 in ETSI GS MEC 011 + Complex attributes to be excluded in the response (see Clause 6.18 in ETSI GS MEC 009), e.g., att or att/subatt. required: false style: form explode: true schema: type: string - - name: exclude_default + - name: Exclude_default in: query description: Indicates to exclude the following complex attributes from the - response See clause 6.18 in ETSI GS MEC 011 for details. + response See clause 6.18 in ETSI GS MEC 009 for details. required: false style: form explode: true -- GitLab From b3f23447e22e480a070d250d23cfa285e3fed528 Mon Sep 17 00:00:00 2001 From: Ikram Ul Haq Date: Tue, 11 Feb 2025 10:48:17 +0000 Subject: [PATCH 49/58] Add Service Provisioning, EEC Registration, and ECS Discovery OAS in app-support --- config/api/app-support.yaml | 1160 +++++++++++++++++++++++++++++++++++ 1 file changed, 1160 insertions(+) diff --git a/config/api/app-support.yaml b/config/api/app-support.yaml index 8aa6e9f..7a14138 100644 --- a/config/api/app-support.yaml +++ b/config/api/app-support.yaml @@ -23,6 +23,7 @@ servers: tags: - name: mec_app_support - name: unsupported + - name: Service Provisioning, EEC Registration, and EAS Discovery - name: callbacks paths: /applications/{appInstanceId}/traffic_rules: @@ -1513,6 +1514,486 @@ paths: description: Empty schema deprecated: false parameters: [] + + /request: + post: + summary: Request service provisioning information. + operationId: RequestServProv + tags: + - Service Provisioning, EEC Registration, and EAS Discovery + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + eecId: + type: string + example: "string" + ueId: + type: string + example: "string" + acProfs: + type: array + items: + type: object + properties: + acId: + type: string + example: "string" + acType: + type: string + example: "string" + eecSvcContSupp: + type: array + items: + type: string + enum: + - EEC_INITIATED + - EEC_EXECUTED_VIA_SOURCE_EES + example: ["EEC_INITIATED", "EEC_EXECUTED_VIA_SOURCE_EES"] + locInf: + type: object + properties: + geographicArea: + type: object + properties: + point: + type: object + properties: + point: + type: object + properties: + lon: + type: number + format: float + example: 7.4200 + lat: + type: number + format: float + example: 43.7356 + shape: + type: string + example: "POINT" + required: + - eecId + responses: + '200': + description: > + OK (The requested service provisioning information was returned successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvResp' + "204": + description: Successful response sent when there is no need to provide a + new liveness interval value to the service Instance. + content: {} + "400": + description: "It is used to indicate that incorrect parameters were passed\ + \ to the request. In the returned ProblemDetails structure, the \"detail\"\ + \ attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: The operation is not allowed given the current status of the + resource. More information shall be provided in the "detail" attribute + of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "It is used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI. In the returned ProblemDetails structure, the\ + \ \"detail\" attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "409": + description: The operation is not allowed due to a conflict with the state + of the resource. The MEC platform shall respond with this code if the + service instance is in "INACTIVE" state. More information shall be provided + in the "detail" attribute of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "It is used when a condition has failed during conditional\ + \ requests, e.g. when using ETags to avoid write conflicts. In the returned\ + \ ProblemDetails structure, the \"detail\" attribute should convey more\ + \ information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + servers: + - url: https://localhost/sandboxname/eecs-serviceprovisioning/v1 + + /registration: + post: + operationId: CreateEECReg + tags: + - Service Provisioning, EEC Registration, and EAS Discovery + description: Create a new EEC registration at the EES. + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + eecId: + type: string + example: "string" + ueId: + type: string + example: "ue-67890" + acProfs: + type: array + items: + type: object + properties: + acId: + type: string + example: "string" + acType: + type: string + example: "string" + expTime: + type: string + format: date-time + example: "2025-01-31T15:04:05Z" + eecSvcContSupp: + type: array + items: + type: string + enum: + - EEC_INITIATED + - SOURCE_EAS_DECIDED + example: ["EEC_INITIATED", "SOURCE_EAS_DECIDED"] + eecCntxId: + type: string + example: "string" + srcEesId: + type: string + example: "mep1" + endPt: + type: object + properties: + uri: + type: string + example: "http://172.30.225.7/sbx2cmq8bn/mep1" + ueMobilityReq: + type: boolean + example: true + easSelReqInd: + type: boolean + example: false + ueType: + type: string + example: "NORMAL_UE" + required: + - eecId + responses: + '201': + description: Created (EEC information is registered successfully at EES). + content: + application/json: + schema: + type: object + properties: + RegistrationID: + type: string + description: Identifier of the EEC registration. + ExpirationTime: + type: string + format: date-time + description: Expiration time of the registration. + EECContextID: + type: string + description: Identifier of the EEC context information available at the EES. + EECContextRelocationStatus: + type: boolean + description: Indicates whether the EEC context retrieval from the source EES was successful. + DiscoveredEASList: + type: array + items: + $ref: '#/components/schemas/EASProfile' + "204": + description: Successful response sent when there is no need to provide a + new liveness interval value to the service Instance. + content: {} + "400": + description: "It is used to indicate that incorrect parameters were passed\ + \ to the request. In the returned ProblemDetails structure, the \"detail\"\ + \ attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: The operation is not allowed given the current status of the + resource. More information shall be provided in the "detail" attribute + of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "It is used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI. In the returned ProblemDetails structure, the\ + \ \"detail\" attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "409": + description: The operation is not allowed due to a conflict with the state + of the resource. The MEC platform shall respond with this code if the + service instance is in "INACTIVE" state. More information shall be provided + in the "detail" attribute of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "412": + description: "It is used when a condition has failed during conditional\ + \ requests, e.g. when using ETags to avoid write conflicts. In the returned\ + \ ProblemDetails structure, the \"detail\" attribute should convey more\ + \ information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + servers: + - url: https://localhost/sandboxname/eees-eecregistration/v1 + + /registration/{registrationId}: + get: + summary: Retrieve EEC Registration Details + operationId: getRegistrationDetails + tags: + - Service Provisioning, EEC Registration, and EAS Discovery + parameters: + - name: registrationId + in: path + description: Identifies an individual EEC registration. + required: true + schema: + type: string + responses: + '200': + description: Successful retrieval of EEC registration details. + content: + application/json: + schema: + type: object + properties: + RegistrationID: + type: string + description: Identifier of the EEC registration. + ExpirationTime: + type: string + format: date-time + description: Expiration time of the registration. + EECContextID: + type: string + description: Identifier of the EEC context information available at the EES. + EECContextRelocationStatus: + type: boolean + description: Indicates whether the EEC context retrieval from the source EES was successful. + DiscoveredEASList: + type: array + items: + $ref: '#/components/schemas/EASProfile' + '404': + description: EEC registration not found. + '400': + description: Invalid registration ID supplied. + '500': + description: Internal server error. + put: + summary: EEC Registration Update Request via PUT + operationId: updateRegistrationPut + tags: + - Service Provisioning, EEC Registration, and EAS Discovery + parameters: + - name: registrationId + in: path + description: Identifies an individual EEC registration. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + acProfs: + type: array + items: + $ref: '#/components/schemas/ACProfile' + description: Profiles of ACs for which the EEC provides edge enabling services. + expTime: + $ref: '#/components/schemas/DateTime' + ueMobilityReq: + type: boolean + description: > + Set to true to indicate that UE Mobility support is required. + Set to false to indicate that UE mobility support is not required. + The default value when omitted is false. + responses: + "200": + description: Successful registration update response via PUT + content: + application/json: + schema: + type: object + properties: + expirationTime: + type: string + format: date-time + description: Expiration time of the registration. + unfulfilledACInfo: + type: array + description: List of unfulfilled AC information. + items: + type: object + properties: + acid: + type: string + description: Application Identifier. + reason: + type: string + description: Reason indicating the cause (e.g., EAS not available). + "204": + description: Successful response sent when there is no need to provide a + new liveness interval value to the service Instance. + content: {} + "400": + description: "It is used to indicate that incorrect parameters were passed\ + \ to the request. In the returned ProblemDetails structure, the \"detail\"\ + \ attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "403": + description: The operation is not allowed given the current status of the + resource. More information shall be provided in the "detail" attribute + of the "ProblemDetails" structure. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + "404": + description: "It is used when a client provided a URI that cannot be mapped\ + \ to a valid resource URI. In the returned ProblemDetails structure, the\ + \ \"detail\" attribute should convey more information about the error." + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + + delete: + operationId: DeleteIndEECReg + tags: + - Service Provisioning, EEC Registration, and EAS Discovery + description: Remove an existing EEC registration at EES. + parameters: + - name: registrationId + in: path + description: Identifies an individual EEC registration. + required: true + schema: + type: string + responses: + '204': + description: > + No Content (An individual EEC registration resource deleted successfully). + servers: + - url: https://localhost/sandboxname/eees-eecregistration/v1 + + /eas-profiles/request-discovery: + post: + description: > + Provides EAS information requested by the service consumer (i.e. EEC, EAS or EES). + operationId: GetEASDiscInfo + tags: + - Service Provisioning, EEC Registration, and EAS Discovery + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + requestorId: + type: object + properties: + eesId: + type: string + example: "string" + eecId: + type: string + example: "string" + oneOf: + - required: ["eesId"] + - required: ["eecId"] + ueId: + type: string + example: "string" + easDiscoveryFilter: + type: object + properties: + acChars: + type: array + items: + type: object + properties: + acProf: + type: object + properties: + acId: + type: string + example: "string" + acType: + type: string + example: "string" + eecSvcContinuity: + type: array + items: + type: string + example: ["EEC_INITIATED", "string"] + locInf: + type: object + description: "Location information. Define properties as required." + example: {} + predictExpTime: + type: string + format: date-time + example: "2025-02-04T09:49:01.348Z" + required: + - requestorId + responses: + '200': + description: > + OK (The requested EAS discovery information was returned successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoveryResp' + + servers: + - url: https://localhost/sandboxname/eees-easdiscovery/v1 /timing/timing_caps: get: tags: @@ -1619,6 +2100,685 @@ paths: parameters: [] components: schemas: + EasDiscoveryResp: + description: EAS discovery response. + type: object + properties: + discoveredEas: + type: array + items: + $ref: '#/components/schemas/DiscoveredEas' + description: List of EAS discovery information. + required: + - discoveredEas + DiscoveredEas: + description: Represents an EAS discovery information. + type: object + properties: + eas: + $ref: '#/components/schemas/EASProfile' + eesEndPt: + $ref: '#/components/schemas/EndPoint' + lifeTime: + $ref: '#/components/schemas/DateTime' + required: + - eas + EasDiscoveryReq: + description: EAS discovery request information. + type: object + properties: + requestorId: + $ref: '#/components/schemas/RequestorId' + ueId: + $ref: '#/components/schemas/Gpsi' + easDiscoveryFilter: + $ref: '#/components/schemas/EasDiscoveryFilter' + eecSvcContinuity: + type: array + items: + $ref: '#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which ACR + scenarios are supported by the EEC. + eesSvcContinuity: + type: array + items: + $ref: '#/components/schemas/ACRScenario' + description: > + Indicates if the EES supports service continuity or not, also indicates which ACR + scenarios are supported by the EES. + easSvcContinuity: + type: array + items: + $ref: '#/components/schemas/ACRScenario' + description: > + Indicates if the EAS supports service continuity or not, also indicates which ACR + scenarios are supported by the EAS. + locInf: + $ref: '#/components/schemas/LocationInfo' + easSelSupInd: + type: boolean + description: > + Indicates if the EEC requires the EAS selection support from the EES (e.g., for + constrained device). The default value false indicates the EAS selection is not + required from the EES. + suppFeat: + $ref: '#/components/schemas/SupportedFeatures' + easIntTrigSup: + type: boolean + description: > + Indicates to the EES whether the EAS instantiation triggering should be performed for + the current request. The default value false indicates the EAS instantiation triggering + should not be performed. The true value indicate the EAS instantiation triggering should + be performed. + predictExpTime: + $ref: '#/components/schemas/DateTime' + required: + - requestorId + + EasDiscoveryFilter: + description: Represents the EAS characteristics. + type: object + properties: + acChars: + type: array + items: + $ref: '#/components/schemas/ACCharacteristics' + minItems: 1 + description: AC description for which an EAS is needed. + ACCharacteristics: + description: Represents EAS dynamic information changes filter. + type: object + properties: + acProf: + $ref: '#/components/schemas/ACProfile' + required: + - acProf + RequestorId: + description: Represents identifier of the requestor. + type: object + properties: + eesId: + type: string + description: The identifier of the EES (e.g. S-EES). + easId: + type: string + description: The application identifier of the EAS (e.g. S-EAS), e.g. FQDN, URI. + eecId: + type: string + description: The identifier of the EEC. + oneOf: + - required: [eesId] + - required: [easId] + - required: [eecId] + + EASProfile: + type: object + required: + - easId + - endPt + - acIds + - scheds + - permLvl + - easFeats + - svcContSupp + - appLocs + properties: + easId: + description: The identifier of the EAS + type: string + example: + appName + endPt: + $ref: '#/components/schemas/EndPoint' + acIds: + type: array + items: + type: string + minItems: 1 + description: Identities of the Application Clients that can be served by the EAS + provId: + type: string + description: Identifier of the ASP that provides the EAS. + example: + appProvider1 + type: + description: The category or type of EAS. + type: string + scheds: + type: array + items: + type: string + minItems: 1 + description: The availability schedule of the EAS. + svcArea: + type: string + description: >- + The list of geographical and topological areas that the EAS serves. ACs in the UE that are outside the area will not be served. + svcKpi: + type: string + description: Service characteristics provided by the EAS. + permLvl: + type: array + items: + type: string + minItems: 1 + description: level of service permissions supported by the EAS. + easFeats: + type: array + items: + type: string + minItems: 1 + description: Service features supported by the EAS. + svcContSupp: + type: array + items: + type: string + minItems: 1 + description: The ACR scenarios supported by the EAS for service continuity. + appLocs: + type: array + items: + type: string + minItems: 1 + description: >- + List of DNAI(s) and the N6 traffic information associated with the EAS. + avlRep: + type: integer + description: >- + The period indicating to the EES, how often the EES needs to check the EAS's availability after a successful registration. + example: + 1577836800 + status: + type: string + description: 'EAS status information. ' + + EECRegistration: + description: Describes the parameters to perform EEC Registration related operations. + type: object + properties: + eecId: + type: string + description: Represents a unique identifier of the EEC. + ueId: + $ref: '#/components/schemas/Gpsi' + acProfs: + type: array + items: + $ref: '#/components/schemas/ACProfile' + description: Profiles of ACs for which the EEC provides edge enabling services. + expTime: + $ref: '#/components/schemas/DateTime' + eecSvcContSupp: + type: array + items: + $ref: '#/components/schemas/ACRScenario' + description: Profiles of ACs for which the EEC provides edge enabling services. + eecCntxId: + type: string + description: Identifier of the EEC context obtained from a previous registration. + srcEesId: + type: string + description: Identifier of the EES that provided EEC context ID. + endPt: + $ref: '#/components/schemas/EndPoint' + ueMobilityReq: + type: boolean + description: > + Set to true to indicate that UE Mobility support is required. + Set to false to indicate that UE mobility support is not required. + The default value when omitted is false. + easSelReqInd: + type: boolean + description: > + Set to true to indicate the EES support for EAS selection. + Set to false to indicate the EES shall not select the EAS. + The default value when omitted is false. + ueType: + $ref: '#/components/schemas/DeviceType' + required: + - eecId + DeviceType: + anyOf: + - type: string + enum: + - CONSTRAINED_UE + - NORMAL_UE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: > + Represents the UE type. + Possible values are: + - CONSTRAINED_UE: Indicates UE is constrained with resources like power, processor etc. + - NORMAL_UE: Indicates UE is not constrained with resources. + ECSServProvReq: + description: ECS service provisioning request information. + type: object + properties: + eecId: + type: string + description: Represents a unique identifier of the EEC. + ueId: + $ref: '#/components/schemas/Gpsi' + acProfs: + type: array + items: + $ref: '#/components/schemas/ACProfile' + description: Information about services the EEC wants to connect to. + appInfo: + type: array + items: + $ref: '#/components/schemas/ApplicationInfo' + minItems: 1 + description: Information about the list of services the EEC wants to connect. + eecSvcContSupp: + type: array + items: + $ref: '#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which + ACR scenarios are supported by the EEC. + locInf: + $ref: '#/components/schemas/LocationInfo' + ecspIds: + type: array + items: + type: string + minItems: 1 + description: Indicates to the ECS which EES providers are preferred by the EEC. + suppFeat: + $ref: '#/components/schemas/SupportedFeatures' + required: + - eecId + + ECSServProvResp: + description: ECS service provisioning response information. + type: object + properties: + ednCnfgInfo: + type: array + items: + $ref: '#/components/schemas/EDNConfigInfo' + minItems: 1 + description: List of EDN configuration information. + required: + - ednCnfgInfo + + SupportedFeatures: + type: string + pattern: '^[A-Fa-f0-9]*$' + description: > + A string used to indicate the features supported by an API that is used as defined in clause + 6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in + hexadecimal representation Each character in the string shall take a value of "0" to "9", + "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in + table 5.2.2-3. The most significant character representing the highest-numbered features + shall appear first in the string, and the character representing features 1 to 4 + shall appear last in the string. The list of features and their numbering (starting with 1) + are defined separately for each API. If the string contains a lower number of characters + than there are defined features for an API, all features that would be represented by + characters that are not present in the string are not supported. + + LocationInfo: + description: Represents the user location information. + type: object + properties: + geographicArea: + $ref: '#/components/schemas/GeographicArea' + + GeographicArea: + description: Geographic area specified by different shape. + anyOf: + - $ref: '#/components/schemas/Point' + Point: + description: Ellipsoid Point. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - point + properties: + point: + $ref: '#/components/schemas/GeographicalCoordinates' + GeographicalCoordinates: + description: Geographical coordinates. + type: object + required: + - lon + - lat + properties: + lon: + type: number + format: double + minimum: -180 + maximum: 180 + lat: + type: number + format: double + minimum: -90 + maximum: 90 + GADShape: + description: Common base type for GAD shapes. + type: object + required: + - shape + properties: + shape: + $ref: '#/components/schemas/SupportedGADShapes' + discriminator: + propertyName: shape + mapping: + POINT: '#/components/schemas/Point' + POINT_UNCERTAINTY_CIRCLE: '#/components/schemas/PointUncertaintyCircle' + POINT_UNCERTAINTY_ELLIPSE: '#/components/schemas/PointUncertaintyEllipse' + POLYGON: '#/components/schemas/Polygon' + POINT_ALTITUDE: '#/components/schemas/PointAltitude' + POINT_ALTITUDE_UNCERTAINTY: '#/components/schemas/PointAltitudeUncertainty' + ELLIPSOID_ARC: '#/components/schemas/EllipsoidArc' + LOCAL_2D_POINT_UNCERTAINTY_ELLIPSE: '#/components/schemas/Local2dPointUncertaintyEllipse' + LOCAL_3D_POINT_UNCERTAINTY_ELLIPSOID: '#/components/schemas/Local3dPointUncertaintyEllipsoid' + SupportedGADShapes: + description: Indicates supported GAD shapes. + anyOf: + - type: string + enum: + - POINT + - POINT_UNCERTAINTY_CIRCLE + - POINT_UNCERTAINTY_ELLIPSE + - POLYGON + - POINT_ALTITUDE + - POINT_ALTITUDE_UNCERTAINTY + - ELLIPSOID_ARC + - LOCAL_2D_POINT_UNCERTAINTY_ELLIPSE + - LOCAL_3D_POINT_UNCERTAINTY_ELLIPSOID + - DISTANCE_DIRECTION + - RELATIVE_2D_LOCATION_UNCERTAINTY_ELLIPSE + - RELATIVE_3D_LOCATION_UNCERTAINTY_ELLIPSOID + - type: string + + Gpsi: + type: string + pattern: '^(msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|.+)$' + description: > + String identifying a Gpsi shall contain either an External Id or an MSISDN. + It shall be formatted as follows -External Identifier= "extid-'extid', where 'extid' + shall be formatted according to clause 19.7.2 of 3GPP TS 23.003 that describes an + External Identifier. + + + ACProfile: + description: AC information indicating required services and service characteristics. + type: object + properties: + acId: + type: string + description: Identity of the AC. + acType: + type: string + description: The category or type of AC. + prefEcsps: + type: array + items: + type: string + description: Indicates to the ECS which ECSPs are preferred for the AC. + simInactTime: + $ref: '#/components/schemas/DurationSec' + eass: + type: array + items: + $ref: '#/components/schemas/EasDetail' + minItems: 1 + description: List of EAS information. + # easBundleInfos: + # type: array + # items: + # $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EASBundleInfo' + # minItems: 1 + # description: > + # List of EAS bundles to which the EAS (identified via the "easId" attribute) belongs. + required: + - acId + + EasDetail: + description: EAS details. + type: object + properties: + easId: + type: string + description: Application identifier of the EAS. + required: + - easId + + DurationSec: + type: integer + minimum: 0 + description: Unsigned integer identifying a period of time in units of seconds. + + + ApplicationInfo: + description: Represents the services the EEC wants to connect. + type: object + properties: + acProf: + $ref: '#/components/schemas/ACProfile' + appGroupProfile: + $ref: '#/components/schemas/AppGroupProfile' + required: + - acProf + + ACRScenario: + anyOf: + - type: string + enum: + - EEC_INITIATED + - EEC_EXECUTED_VIA_SOURCE_EES + - EEC_EXECUTED_VIA_TARGET_EES + - SOURCE_EAS_DECIDED + - SOURCE_EES_EXECUTED + - EEL_MANAGED_ACR + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the ACR scenarios supported by EES. + Possible values are: + - EEC_INITIATED: Represents the EEC initiated ACR scenario. + - EEC_EXECUTED_VIA_SOURCE_EES: Represents the EEC ACR scenario executed via the S-EES. + - EEC_EXECUTED_VIA_TARGET_EES: Represents the EEC ACR scenario executed via the T-EES. + - SOURCE_EAS_DECIDED: Represents the EEC ACR scenario where the S-EAS decides to perform + ACR. + - SOURCE_EES_EXECUTED: Represents the EEC ACR scenario where S-EES executes the ACR. + - EEL_MANAGED_ACR: Represents the EEC ACR scenario where the ACR is managed by the + Edge Enabler Layer. + AppGroupProfile: + description: Represents the application group profile for common EAS. + type: object + properties: + appGrpId: + type: string + description: Represents the application group that uniquely identifies + the group of UEs using the same application. + easId: + type: string + description: Represents the application identifier of the EAS. + required: + - appGrpId + - easId + + EDNConfigInfo: + description: Represents the EDN configuration information. + type: object + properties: + ednConInfo: + $ref: '#/components/schemas/EDNConInfo' + eess: + type: array + items: + $ref: '#/components/schemas/EESInfo' + minItems: 1 + description: Contains the list of EESs of the EDN. + lifeTime: + $ref: '#/components/schemas/DateTime' + required: + - ednConInfo + - eess + + + EDNConInfo: + description: Represents an EDN connection information. + type: object + properties: + dnn: + $ref: '#/components/schemas/Dnn' + # snssai: + # $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + # ednTopoSrvArea: + # $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + + Dnn: + type: string + description: > + String representing a Data Network as defined in clause 9A of 3GPP TS 23.003; + it shall contain either a DNN Network Identifier, or a full DNN with both the Network + Identifier and Operator Identifier, as specified in 3GPP TS 23.003 clause 9.1.1 and 9.1.2. + It shall be coded as string in which the labels are separated by dots + (e.g. "Label1.Label2.Label3"). + + DateTime: + format: date-time + type: string + description: string with format "date-time" as defined in OpenAPI. + + + EESInfo: + description: Represents EES information. + type: object + properties: + eesId: + type: string + description: Identity of the EES. + endPt: + $ref: '#/components/schemas/EndPoint' + easIds: + type: array + items: + type: string + description: > + Application identities of the Edge Application Servers registered + with the EES. + eecRegConf: + type: boolean + description: > + Indicates whether the EEC is required to register on the EES to use edge services + or not. + required: + - eesId + - eecRegConf + Fqdn: + description: Fully Qualified Domain Name + type: string + pattern: '^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$' + minLength: 4 + maxLength: 253 + + Ipv6Addr: + type: string + description: > + string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. + The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used. + Uri: + type: string + description: string providing an URI formatted according to IETF RFC 3986. + Ipv4Addr: + type: string + description: > + string identifying a Ipv4 address formatted in the "dotted decimal" notation as defined in + IETF RFC 1166. + EndPoint: + type: object + description: The end point information to reach EAS. + properties: + fqdn: + $ref: '#/components/schemas/Fqdn' + ipv4Addrs: + type: array + items: + $ref: '#/components/schemas/Ipv4Addr' + minItems: 1 + description: IPv4 addresses of the edge server. + ipv6Addrs: + type: array + items: + $ref: '#/components/schemas/Ipv6Addr' + minItems: 1 + description: IPv6 addresses of the edge server. + uri: + $ref: '#/components/schemas/Uri' + oneOf: + - required: [uri] + - required: [fqdn] + - required: [ipv4Addrs] + - required: [ipv6Addrs] + + InvalidParam: + description: > + Represents the description of invalid parameters, for a request rejected due to invalid + parameters. + type: object + properties: + param: + type: string + description: Attribute's name encoded as a JSON Pointer, or header's name. + reason: + type: string + description: A human-readable reason, e.g. "must be a positive integer". + required: + - param + + # EASBundleDetail: + # description: Represents details of EAS Bundle. + # type: object + # properties: + # easId: + # type: string + # description: > + # Application identity of the Edge Application Servers registered with the EES. + # easBundleInfos: + # type: array + # items: + # $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EASBundleInfo' + # minItems: 1 + # description: List of EAS bundles to which the EAS belongs. + # required: + # - easId + # - easBundleInfos + EesAuthMethod: + anyOf: + - type: string + enum: + - TLS_CLIENT_SERVER_CERTIFICATE + - TLS_WITH_AKMA + - TLS_WITH_GBA + - SERVER_SIDE_CERTIFICATE_BASED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the Authentication methods supported by EES. + Possible values are: + - TLS_CLIENT_SERVER_CERTIFICATE: Represents TLS with client server certificate + authentication. + - TLS_WITH_AKMA: Represents TLS with AKMA authentication. + - TLS_WITH_GBA: Represents TLS with GBA authentication. + - SERVER_SIDE_CERTIFICATE_BASED: Represents server side certification only. + AppReadyConfirmation: title: AppReadyConfirmation required: -- GitLab From c016b7f1891dc3d0d9ba860b356f19507d44ffde Mon Sep 17 00:00:00 2001 From: Umair Khan Date: Mon, 24 Feb 2025 06:46:12 +0000 Subject: [PATCH 50/58] Minor change in MEC 021 App Mobility GET resource filter parameters description --- config/api/ams-api.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/config/api/ams-api.yaml b/config/api/ams-api.yaml index 88a2798..aead8b5 100644 --- a/config/api/ams-api.yaml +++ b/config/api/ams-api.yaml @@ -147,7 +147,8 @@ paths: - name: filter in: query description: - Attribute-based filtering parameters, according to ETSI GS MEC 009, use the format (op,attr,value) + Attribute-based filtering parameters, according to ETSI GS MEC 009, use the format (op,attr,value), + e.g., (eq, appMobilityServiceId, value) or (gt, serviceConsumerId/appInstanceId, value) required: false style: form explode: true @@ -183,7 +184,7 @@ paths: in: query description: Indicates to exclude the following complex attributes from the - response See clause 6.18 in ETSI GS MEC 009 for details. + response (See clause 6.18 in ETSI GS MEC 009 for details). required: false style: form explode: true -- GitLab From 3d15523e2eaa9a20f6e3a73eb507508751e32d5a Mon Sep 17 00:00:00 2001 From: garciay Date: Sun, 11 May 2025 08:02:13 +0200 Subject: [PATCH 51/58] Bugs fixed on meep-dederation during TTF T043 validation --- README.md | 41 ++++++++++++- config/api/fed-api.yaml | 61 +++++++++++++++++-- js-apps/frontend/src/js/app-constants.js | 2 +- .../dialogs/detailed-data-dialog.js | 2 +- .../src/js/containers/app-container.js | 2 +- .../js/containers/home/home-page-container.js | 2 +- .../src/js/containers/sandbox/api-table.js | 2 +- .../frontend/src/js/util/scenario-utils.js | 2 +- 8 files changed, 103 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3b09850..2f64466 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ presented via OpenAPI compliant descriptions. MEC Sandbox provides the user with a choice of scenarios combining different network technologies (4G, 5G, Wi-Fi) and terminal types. Combining these assets in a geolocated environment, a user can gain hands-on experience on the behaviour and capabilities of the Location (MEC013), Radio Network Information (MEC012), Traffic Management APIs (MEC015), Device Application Interface (MEC016), -WLAN Information (MEC028), Edge Platform Application Enablement (MEC011) and Application Mobility (MEC021) service APIs. Such contextual information can offer +WLAN Information (MEC028), Edge Platform Application Enablement (MEC011) and Application Mobility (MEC021) service APIs, V2X Information API (MEC030) service API and MEC Federation Service API (MEC040) service APIs. Such contextual information can offer significant differential performance for edge based MEC applications. Application Enablement (MEC011) and Application Mobility (MEC021) service APIs. Such contextual information can offer significant differential performance for edge based MEC applications. @@ -74,6 +74,45 @@ MEC Sandbox has the following prerequisites: - Ubuntu 18.04: `sudo apt install python-pip` - Ubuntu 20.04: `sudo apt install python3-pip` - Install Pyyaml: `pip install pyyaml` +1. Host NFS server installation +In order to be deployed properly, MEC 016 service requires that an NFS server was deployed on the host. To achieve it, the followimg steps are required: + +- Install the NFS server +```sh +$ sudo apt-get update +$ sudo apt install nfs-kernel-server nfs-common portmap +``` +- Check that the NFS server is running on the host +```sh +$ sudo systemctl status nfs-server +``` +The outpout looks like: +``` +nfs-server.service - NFS server and services + Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled) + Active: active (exited) since Mon 2024-09-16 09:10:45 CEST; 42s ago + Main PID: 923678 (code=exited, status=0/SUCCESS) + Tasks: 0 (limit: 38358) + Memory: 0B + CGroup: /system.slice/nfs-server.service +``` +- Create the NFS shared folder +```sh +$ sudo mkdir -p /mnt/nfs/mec_sandbox +$ sudo chmod -R 777 /mnt/nfs/ +``` +- Update the /etc/exports file by adding the following line: +```sh +sudo echo '/mnt/nfs/mec_sandbox *(rw,sync,no_subtree_check,no_root_squash,insecure)' > /etc/exports +``` +- Export the NFS shared folder +```sh +$ sudo exportfs -rv +``` +- Check that the NFS shared folder is exported +```sh +$ showmount -e +``` ### Deploy Long-term Storage (MinIO + Thanos Compactor) diff --git a/config/api/fed-api.yaml b/config/api/fed-api.yaml index 6be97df..71eeb97 100644 --- a/config/api/fed-api.yaml +++ b/config/api/fed-api.yaml @@ -12,7 +12,7 @@ externalDocs: description: "ETSI GS MEC 040 Federation enablement API, v3.2.1" url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/040/03.02.01_60/gs_MEC040v030201p.pdf servers: -- url: https://localhost/sandboxname/fed_enablement/v1 +- url: https://localhost/sandboxname/sandboxname/sandboxname/sandboxname/fed_enablement/v1 tags: - name: systemInfo - name: subscription @@ -710,7 +710,8 @@ paths: x-exportParamName: Path.serviceId responses: "200": - description: "Upon success, a response body containing data type describing the specific subscription data type is returned." + description: "Upon success, a response body containing data type describing\ + \ the specific subscription data type is returned." content: application/json: schema: @@ -949,8 +950,60 @@ components: \ as a part of the \nUpdate of MEC system(s) to the federation.\n" EndPointInfo: title: EndPointInfo - type: string - description: "Endpoint information (e.g. URI, FQDN, IP address) of MEC federator." + type: object + properties: + uris: + type: array + description: "Entry point information of the service as string, formatted\ + \ according to URI syntax (see IETF RFC 3986 [8]). Shall be used for REST\ + \ APIs. See note." + items: + type: string + fqdn: + type: array + description: Fully Qualified Domain Name of the service. See note. + items: + type: string + addresses: + type: array + items: + $ref: '#/components/schemas/Addresses' + alternative: + type: string + description: "Entry point information of the service in a format defined\ + \ by an implementation, or in an external specification. See\_note." + description: "NOTE: Exactly one of \"uris\", \"fqdn\", \"addresses\" or \"alternative\"\ + \ shall be present. \n" + example: + uris: + - uris + - uris + addresses: + - port: 0 + host: host + - port: 0 + host: host + fqdn: + - fqdn + - fqdn + alternative: alternative + Addresses: + required: + - host + - port + type: object + properties: + host: + type: string + description: Host portion of the address. + port: + type: integer + description: Port portion of the address. + description: Entry point information of the service as one or more pairs of + IP address and port. See note. + example: + port: 0 + host: host SystemUpdateNotificationSubscription: title: SystemUpdateNotificationSubscription required: diff --git a/js-apps/frontend/src/js/app-constants.js b/js-apps/frontend/src/js/app-constants.js index ceedde0..955dfd3 100644 --- a/js-apps/frontend/src/js/app-constants.js +++ b/js-apps/frontend/src/js/app-constants.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 ETSI. All rights reserved. + * Copyright (c) 2022-2025 ETSI. All rights reserved. */ // Version diff --git a/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js b/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js index e1ec130..651e602 100644 --- a/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js +++ b/js-apps/frontend/src/js/components/dialogs/detailed-data-dialog.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 ETSI. All rights reserved. + * Copyright (c) 2022-2025 ETSI. All rights reserved. */ import React, { Component } from 'react'; diff --git a/js-apps/frontend/src/js/containers/app-container.js b/js-apps/frontend/src/js/containers/app-container.js index ac387e5..3b13321 100644 --- a/js-apps/frontend/src/js/containers/app-container.js +++ b/js-apps/frontend/src/js/containers/app-container.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 ETSI. All rights reserved. + * Copyright (c) 2022-2025 ETSI. All rights reserved. */ import _ from 'lodash'; diff --git a/js-apps/frontend/src/js/containers/home/home-page-container.js b/js-apps/frontend/src/js/containers/home/home-page-container.js index ac7623f..c88db30 100644 --- a/js-apps/frontend/src/js/containers/home/home-page-container.js +++ b/js-apps/frontend/src/js/containers/home/home-page-container.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 ETSI. All rights reserved. + * Copyright (c) 2022-2025 ETSI. All rights reserved. */ import { connect } from 'react-redux'; diff --git a/js-apps/frontend/src/js/containers/sandbox/api-table.js b/js-apps/frontend/src/js/containers/sandbox/api-table.js index 5c805d9..16404f8 100644 --- a/js-apps/frontend/src/js/containers/sandbox/api-table.js +++ b/js-apps/frontend/src/js/containers/sandbox/api-table.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 ETSI. All rights reserved. + * Copyright (c) 2022-2025 ETSI. All rights reserved. */ import PropTypes from 'prop-types'; diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index ed0f24d..ca021a0 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 ETSI. All rights reserved. + * Copyright (c) 2022-2025 ETSI. All rights reserved. */ import _ from 'lodash'; -- GitLab From 302fbcda46ebd30ff458e2663b8facaeb465e504 Mon Sep 17 00:00:00 2001 From: Ikram ul Haq Date: Tue, 3 Jun 2025 06:16:08 +0000 Subject: [PATCH 52/58] bug fix: federation API, frontend warnings, and repo configs --- config/.meepctl-repocfg.yaml | 92 +++++++++---------- config/api/fed-api.yaml | 10 +- .../js/containers/home/home-page-container.js | 6 +- 3 files changed, 54 insertions(+), 54 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 0b9182d..4158288 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -38,7 +38,7 @@ repo: # platform ingress configuration ingress: # host name - host: 172.30.225.7 + host: try-mec.etsi.org # enable https only (redirect http requests to https port) https-only: false # bind to host ports (true) or node ports (false) @@ -48,7 +48,7 @@ repo: # https config https-port: 443 # certificate authority (none|self-signed|lets-encrypt) default: none - ca: self-signed + ca: lets-encrypt # lets-encrypt production server (true) or staging server (false) le-server-prod: true @@ -75,11 +75,11 @@ repo: # device polling url poll-url: https://github.com/login/oauth/access_token # authorization url - auth-url: https://github.com/login/device/code + auth-url: https://github.com/login/oauth/authorize # access token url token-url: https://github.com/login/oauth/access_token # OAuth redirect URI - redirect-uri: https://mec-platform2.etsi.org/platform-ctrl/v1/authorize + redirect-uri: https://try-mec.etsi.org/platform-ctrl/v1/authorize # OAuth k8s secret (data: client-id, secret) secret: meep-oauth-github # GitLab OAuth provider config @@ -380,7 +380,7 @@ repo: meep-metrics-engine: charts/meep-metrics-engine meep-mg-manager: charts/meep-mg-manager meep-rnis: charts/meep-rnis -# meep-dai: charts/meep-dai + meep-dai: charts/meep-dai meep-tm: charts/meep-tm meep-wais: charts/meep-wais meep-ams: charts/meep-ams @@ -836,42 +836,42 @@ repo: docker-data: # location of entry script 'entrypoint.sh': go-apps/meep-tm/entrypoint.sh -# meep-dai: -# # location of source code -# src: go-apps/meep-dai -# # location of binary -# bin: bin/meep-dai -# # location of deployment chart -# chart: charts/meep-dai -# # user supplied value file located @ .meep/user/values (use below file name) -# chart-user-values: meep-dai.yaml -# # extra build flags -# build-flags: -# - -mod=vendor -# # enable meepctl build -# build: false #true -# # enable meepctl dockerize -# dockerize: false #true -# # enable meepctl deploy/delete -# deploy: false #true -# # supports code coverage measurement when built in codecov mode -# codecov: true -# # supports onboarded device application instantiation -# onboardedapp: true -# # supports linting -# lint: true -# # location of API specifications -# api: -# - name: 'AdvantEDGE Device Application Interface REST API' -# file: go-apps/meep-dai/api/swagger.yaml -# # location of user supplied API specifications -# user-api: -# - name: 'Device Application Interface REST API' -# file: config/api/dai-api.yaml -# # resources available to docker container image -# docker-data: -# # location of entry script -# 'entrypoint.sh': go-apps/meep-dai/entrypoint.sh + meep-dai: + # location of source code + src: go-apps/meep-dai + # location of binary + bin: bin/meep-dai + # location of deployment chart + chart: charts/meep-dai + # user supplied value file located @ .meep/user/values (use below file name) + chart-user-values: meep-dai.yaml + # extra build flags + build-flags: + - -mod=vendor + # enable meepctl build + build: true + # enable meepctl dockerize + dockerize: true + # enable meepctl deploy/delete + deploy: true + # supports code coverage measurement when built in codecov mode + codecov: true + # supports onboarded device application instantiation + onboardedapp: true + # supports linting + lint: true + # location of API specifications + api: + - name: 'AdvantEDGE Device Application Interface REST API' + file: go-apps/meep-dai/api/swagger.yaml + # location of user supplied API specifications + user-api: + - name: 'Device Application Interface REST API' + file: config/api/dai-api.yaml + # resources available to docker container image + docker-data: + # location of entry script + 'entrypoint.sh': go-apps/meep-dai/entrypoint.sh meep-vis: # location of source code src: go-apps/meep-vis @@ -1288,11 +1288,11 @@ repo: src: go-packages/meep-users # supports linting lint: true -# meep-dai-client: -# # location of source code -# src: go-packages/meep-dai-client -# # supports linting -# lint: false + meep-dai-client: + # location of source code + src: go-packages/meep-dai-client + # supports linting + lint: false meep-wais-client: # location of source code src: go-packages/meep-wais-client diff --git a/config/api/fed-api.yaml b/config/api/fed-api.yaml index 71eeb97..baf80bc 100644 --- a/config/api/fed-api.yaml +++ b/config/api/fed-api.yaml @@ -12,7 +12,7 @@ externalDocs: description: "ETSI GS MEC 040 Federation enablement API, v3.2.1" url: https://www.etsi.org/deliver/etsi_gs/MEC/001_099/040/03.02.01_60/gs_MEC040v030201p.pdf servers: -- url: https://localhost/sandboxname/sandboxname/sandboxname/sandboxname/fed_enablement/v1 +- url: https://localhost/sandboxname/fed_enablement/v1 tags: - name: systemInfo - name: subscription @@ -119,7 +119,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/fed_resources_systems_body' + $ref: '#/components/schemas/SystemInfo' required: true responses: "201": @@ -293,7 +293,7 @@ paths: content: application/json: schema: - $ref: '#/components/schemas/systems_systemId_body' + $ref: '#/components/schemas/SystemInfoUpdate' required: true responses: "200": @@ -1089,8 +1089,8 @@ components: description: The expiration time of the subscription determined by the MEC Federation Enablement Service. example: - seconds: 0 - nanoSeconds: 6 + seconds: 100 + nanoSeconds: 1000000 links: title: links required: diff --git a/js-apps/frontend/src/js/containers/home/home-page-container.js b/js-apps/frontend/src/js/containers/home/home-page-container.js index c88db30..ad9b065 100644 --- a/js-apps/frontend/src/js/containers/home/home-page-container.js +++ b/js-apps/frontend/src/js/containers/home/home-page-container.js @@ -71,7 +71,7 @@ class HomePageContainer extends Component { (4G, 5G, Wi-Fi, MEC Federation) and terminal types. Combining these assets in a geolocated environment, a user can gain hands-on experience on the behaviour and capabilities of the Location (MEC013), Radio Network Information (MEC012), Traffic Management APIs (MEC015), Device application interface (MEC016), Application Mobility (MEC021), WLAN Information (MEC028) and - V2X Information API (MEC030) service API and MEC Federation Service API (MEC040) service APIs. + V2X Information API (MEC030) service API and MEC Federation Service API (MEC040) service APIs. MEC Sandbox provides also a support for Edge Native Connector (3GPP TS 29.222: 3rd Generation Partnership Project; Technical Specification Group Core Network and Terminals; Common API Framework for 3GPP Northbound APIs).

@@ -81,8 +81,8 @@ class HomePageContainer extends Component {

Important Note: If MEC Federation Service API (MEC040) is used (e.g. by activation 4g-5g-wifi-macro-v2x-fed network scenarion), MEC services and - MEC applications will be visible from other MEC Platform using also MEC Federation Service API (MEC040). - If you choose to use MEC Federation Service API (MEC040), you accept to establish MEC federation between two partners as specified in ETSI GS MEC 040 V3.2.1 (2024-03) Clause 5.2.4.1 Introduction. + MEC applications will be visible from other MEC Platform using also MEC Federation Service API (MEC040). + If you choose to use MEC Federation Service API (MEC040), you accept to establish MEC federation between two partners as specified in ETSI GS MEC 040 V3.2.1 (2024-03) Clause 5.2.4.1 Introduction.

-- GitLab From f3ec8b7c487cc96ed8e706b88f6f6332f6da9085 Mon Sep 17 00:00:00 2001 From: Ikram ul Haq Date: Sun, 15 Jun 2025 10:46:28 +0000 Subject: [PATCH 53/58] Correction of date for version at the frontend --- js-apps/frontend/src/js/components/dialogs/version-dialog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js-apps/frontend/src/js/components/dialogs/version-dialog.js b/js-apps/frontend/src/js/components/dialogs/version-dialog.js index dc2c6e7..d0d3dc6 100644 --- a/js-apps/frontend/src/js/components/dialogs/version-dialog.js +++ b/js-apps/frontend/src/js/components/dialogs/version-dialog.js @@ -22,7 +22,7 @@ class VersionDialog extends Component { >

-

v1.10 • 2023-02-22

+

v1.10 • 2025-06-20

AdvantEDGE baseline upgrade to v1.10.0

STF678 Final: -- GitLab From eb4185600c6ac7c9de3c0cdd18cc4e6cec1b7709 Mon Sep 17 00:00:00 2001 From: Ikram ul Haq Date: Sun, 15 Jun 2025 10:53:51 +0000 Subject: [PATCH 54/58] Updated federation scenario --- networks/4g-5g-macro-v2x-fed.yaml | 1215 ++++++++++++++++++++++++++++- 1 file changed, 1214 insertions(+), 1 deletion(-) diff --git a/networks/4g-5g-macro-v2x-fed.yaml b/networks/4g-5g-macro-v2x-fed.yaml index 04c723c..543a298 100644 --- a/networks/4g-5g-macro-v2x-fed.yaml +++ b/networks/4g-5g-macro-v2x-fed.yaml @@ -7,10 +7,13 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + throughput: null + packetLoss: null connectivity: model: OPEN d2d: d2dMaxDistance: 100 + disableD2dViaNetwork: null userMeta: mec-sandbox: '{"defaultStaticUeCount": 1, "defaultLowVelocityUeCount": 1, "defaultHighVelocityUeCount": 1, "highVelocitySpeedThreshold": 10}' network-info: '{"type": "local", "path":"4G-Macro-Network-Topology.png"}' @@ -24,6 +27,9 @@ deployment: latencyVariation: 2 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null zones: - id: PUBLIC-COMMON @@ -34,6 +40,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null networkLocations: - id: PUBLIC-COMMON-DEFAULT @@ -44,6 +53,42 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + cellularDomainConfig: null - id: f1c5f2fe-5fbb-48fa-a0df-6ad00e4eeb4c name: sandbox-operator @@ -53,6 +98,9 @@ deployment: latencyVariation: 2 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null cellularDomainConfig: mnc: '001' mcc: '001' @@ -67,6 +115,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null networkLocations: - id: sandbox-operator-COMMON-DEFAULT @@ -77,6 +128,35 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + meta: null + userMeta: null - id: 6fd7e9d1-3646-474d-880b-d4a21799d280 name: zone01 @@ -86,6 +166,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null meta: display.map.color: blueviolet networkLocations: @@ -98,6 +181,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null physicalLocations: - id: 138c1c53-7f25-4c52-a025-3b607da5f97a @@ -109,8 +195,14 @@ deployment: coordinates: - 7.421096 - 43.73408 + radius: null + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null connected: true - dataNetwork: {} + dataNetwork: {dnn: null, ladn: null, ecsp: null} processes: - id: 62cc2936-af22-4946-b3e5-5b9143d7203f @@ -121,6 +213,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + environment: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null - id: b8a203be-ac81-45a6-8d88-fdb1f8f5393b name: mec012-1 @@ -131,6 +247,29 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null - id: 298b2c0c-7efa-45d3-8b47-8ab3c009b845 name: mec013-1 @@ -141,6 +280,29 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null - id: f1e4d448-e277-496b-bf63-98391cfd20fb name: mec015-1 @@ -151,6 +313,29 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null - id: fb4d3c6a-197e-4e3f-96ae-ab4d5ac663a9 name: mec016-1 @@ -161,6 +346,29 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null - id: b8ae165a-a1e3-4d6c-86d9-52c59ad314b6 name: mec028-1 @@ -171,6 +379,29 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null - id: 5015e45f-be53-4e28-8f47-c107fd1dea8c name: mec030-1 @@ -181,6 +412,29 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null - id: a88756b5-f816-4fd0-9977-936d1382b6d8 name: mec040-1 @@ -190,10 +444,100 @@ deployment: netChar: throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + isExternal: null + commandArguments: null + commandExe: null + serviceConfig: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null + - + id: 1600b680-a37a-4e74-8025-3054af752872 + name: meep-mosquitto + type: EDGE-APP + image: 'meep-docker-registry:30001/meep-mosquitto' + serviceConfig: + name: meep-mosquitto + ports: + - + protocol: TCP + port: 1883 + externalPort: null + meSvcName: null + netChar: + throughputDl: 1000 + throughputUl: 1000 + latency: null + latencyVariation: null + latencyDistribution: null + throughput: null + packetLoss: null + isExternal: null + environment: null + commandArguments: null + commandExe: null + gpuConfig: null + memoryConfig: null + cpuConfig: null + externalConfig: null + status: null + userChartLocation: null + userChartAlternateValues: null + userChartGroup: null + meta: null + userMeta: null + appLatency: null + appLatencyVariation: null + appThroughput: null + appPacketLoss: null + placementId: null netChar: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null + isExternal: null + networkLocationsInRange: null + wireless: null + wirelessType: null + meta: null + userMeta: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + macId: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null - id: 3480e529-3fc1-44b8-a892-42bbbfa4018f name: 4g-macro-cell-1 @@ -203,6 +547,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '1010101' geoData: @@ -212,6 +559,11 @@ deployment: - 7.419344 - 43.72764 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null physicalLocations: - id: 3331ee44-2236-1111-0020-5a3c2bde0eaa @@ -306,6 +658,9 @@ deployment: - 43.730103 eopMode: REVERSE velocity: 9 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -314,7 +669,21 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A0A0004 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null - id: 1e2600f4-4861-43d6-abcb-07f4481a124c name: 10.10.0.3 @@ -417,6 +786,9 @@ deployment: - 43.727867 eopMode: LOOP velocity: 9 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -425,7 +797,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A0A0003 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null - id: 8c2599e8-dd88-4ff2-9cf4-6fc54663c152 name: 4g-macro-cell-2 @@ -435,6 +830,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '2020202' geoData: @@ -444,6 +842,11 @@ deployment: - 7.413819 - 43.729538 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null physicalLocations: - id: c52208b3-93bb-4255-9b34-52432acc4398 @@ -2080,6 +2483,9 @@ deployment: - 43.728676 eopMode: LOOP velocity: 20 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -2088,7 +2494,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A640001 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null - id: f32f0c05-4491-4a93-be0c-19420d4407f0 name: 4g-macro-cell-3 @@ -2098,6 +2527,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '3030303' geoData: @@ -2107,6 +2539,11 @@ deployment: - 7.416715 - 43.733616 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null physicalLocations: - id: 0ca4bfcc-7346-4f57-9c85-bb92642ec37e @@ -2118,6 +2555,12 @@ deployment: coordinates: - 7.4187 - 43.732403 + radius: null + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -2126,7 +2569,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A010002 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null - id: 37be6821-a5f3-4af9-af0a-ceff4c0f66be name: 5g-small-cell-1 @@ -2136,6 +2602,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '101010101' geoData: @@ -2145,6 +2614,21 @@ deployment: - 7.415385 - 43.730846 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: ab60918a-acd8-4f4e-9693-d2fbffae9b72 name: 5g-small-cell-2 @@ -2154,6 +2638,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '202020202' geoData: @@ -2163,6 +2650,21 @@ deployment: - 7.416962 - 43.731453 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: de2d952d-11b1-4294-8a67-6d994f1a5f37 name: 5g-small-cell-3 @@ -2172,6 +2674,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '303030303' geoData: @@ -2181,6 +2686,21 @@ deployment: - 7.417023 - 43.733227 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 9bd631b3-44f5-4f92-ad1a-d50c9c3e869d name: 5g-small-cell-4 @@ -2190,6 +2710,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '04040404' geoData: @@ -2199,6 +2722,34 @@ deployment: - 7.417173 - 43.72764 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null - id: 4c3c9568-6408-4900-9d97-4556f6d805db name: zone02 @@ -2208,6 +2759,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null meta: display.map.color: darkred networkLocations: @@ -2220,6 +2774,21 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null - id: 78327873-c828-47da-8a5b-3c74d251dbbc name: 4g-macro-cell-4 @@ -2229,6 +2798,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '4040404' geoData: @@ -2238,6 +2810,11 @@ deployment: - 7.423547 - 43.731724 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null physicalLocations: - id: 67a40b8b-5777-4e96-a896-8622af4a741f @@ -2428,6 +3005,9 @@ deployment: - 43.74177 eopMode: REVERSE velocity: 20 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -2436,7 +3016,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A640003 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null - id: ca3b5b42-0e99-4553-9d19-4696cd8fe469 name: 4g-macro-cell-5 @@ -2446,6 +3049,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '5050505' geoData: @@ -2455,6 +3061,11 @@ deployment: - 7.429257 - 43.73411 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null physicalLocations: - id: c18e3f93-79c4-427d-af91-81996adab3e7 @@ -2466,6 +3077,12 @@ deployment: coordinates: - 7.426565 - 43.73298 + radius: null + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -2474,7 +3091,21 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A010003 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null - id: 1d2683f4-086e-47d6-abbb-07fa481a25fb name: 10.10.0.1 @@ -2775,6 +3406,9 @@ deployment: - 43.736343 eopMode: REVERSE velocity: 9 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -2783,7 +3417,21 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A0A0001 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null - id: ec32caa6-ddc6-4f5e-a815-654782b31abb name: 10.100.0.2 @@ -3435,6 +4083,9 @@ deployment: - 43.73243 eopMode: LOOP velocity: 20 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -3443,7 +4094,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A640002 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null - id: bddd61c9-6ddd-4f7e-9082-0d004fced7ab name: 5g-small-cell-5 @@ -3453,6 +4127,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '505050505' geoData: @@ -3462,6 +4139,21 @@ deployment: - 7.420653 - 43.731743 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 8e0dad0d-72c9-4b6d-850b-06b02243b1d3 name: 5g-small-cell-6 @@ -3471,6 +4163,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '606060606' geoData: @@ -3480,6 +4175,21 @@ deployment: - 7.421865 - 43.733368 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 7d3688cc-0dda-48b1-a171-b817c176e053 name: 5g-small-cell-7 @@ -3489,6 +4199,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '808080808' geoData: @@ -3498,6 +4211,21 @@ deployment: - 7.42509 - 43.73189 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 91691048-64bb-4d2f-917f-4219a95881c0 name: 5g-small-cell-8 @@ -3507,6 +4235,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '909090909' geoData: @@ -3516,6 +4247,34 @@ deployment: - 7.42704 - 43.732407 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null - id: 472c9927-800a-46e9-9d62-d08b09080dd5 name: zone03 @@ -3525,6 +4284,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null meta: display.map.color: darkorange networkLocations: @@ -3537,6 +4299,21 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null - id: e4ce8267-5433-4b2b-aa5a-9a40de76b685 name: 4g-macro-cell-6 @@ -3546,6 +4323,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '6060606' geoData: @@ -3555,6 +4335,11 @@ deployment: - 7.421007 - 43.737087 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null physicalLocations: - id: c3bc8d8d-170b-45bb-93a9-8ce658571321 @@ -3566,6 +4351,12 @@ deployment: coordinates: - 7.421802 - 43.736515 + radius: null + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -3574,7 +4365,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A010001 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null - id: 663df9f0-57af-43aa-ba2e-e45a4b2f3c28 name: 4g-macro-cell-7 @@ -3584,6 +4398,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '7070707' geoData: @@ -3593,6 +4410,21 @@ deployment: - 7.425841 - 43.739426 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null - id: a3067167-cdaf-4264-9e32-abfc0ede0564 name: 5g-small-cell-10 @@ -3602,6 +4434,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: 0A0A0A0A geoData: @@ -3611,6 +4446,21 @@ deployment: - 7.426598 - 43.73844 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 2c2ba76c-8880-4c5b-a949-a161713910f4 name: 5g-small-cell-11 @@ -3620,6 +4470,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: 0B0B0B0B geoData: @@ -3629,6 +4482,21 @@ deployment: - 7.428264 - 43.73876 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: d9ca5e58-15fe-4161-840f-f3155db3729b name: 5g-small-cell-12 @@ -3638,6 +4506,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: 0C0C0C0C geoData: @@ -3647,6 +4518,21 @@ deployment: - 7.42738 - 43.739075 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 8414d39b-d3c3-45e1-a235-cf93d211579c name: 5g-small-cell-9 @@ -3656,6 +4542,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '07070707' geoData: @@ -3665,6 +4554,34 @@ deployment: - 7.417394 - 43.735794 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null - id: d56c4e67-0e0f-4456-9431-290de7b674c8 name: zone04 @@ -3674,6 +4591,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null meta: display.map.color: limegreen networkLocations: @@ -3686,6 +4606,21 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poa5GConfig: null + poaWifiConfig: null + geoData: null + physicalLocations: null - id: fc4d9ec8-ebb6-4b5d-a281-bb74af729b4a name: 4g-macro-cell-8 @@ -3695,6 +4630,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '8080808' geoData: @@ -3704,6 +4642,21 @@ deployment: - 7.429504 - 43.74301 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null - id: b73b3ef5-dba0-44af-a648-bbda7191c249 name: 4g-macro-cell-9 @@ -3713,6 +4666,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: '9090909' geoData: @@ -3722,6 +4678,21 @@ deployment: - 7.432551 - 43.746544 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null + physicalLocations: null - id: e1d47a4b-0664-4915-81ea-eb0d70af15a7 name: 4g-macro-cell-10 @@ -3731,6 +4702,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa4GConfig: cellId: A0A0A0A geoData: @@ -3740,6 +4714,11 @@ deployment: - 7.437573 - 43.748993 radius: 400 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null physicalLocations: - id: 4e423f57-daef-4c1c-b30e-45e88e3c9366 @@ -3751,6 +4730,12 @@ deployment: coordinates: - 7.438248 - 43.74835 + radius: null + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -3759,7 +4744,21 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A010004 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null - id: 824cf1bf-f91d-44c2-906d-e939fa3339cd name: 10.10.0.2 @@ -3877,6 +4876,9 @@ deployment: - 43.736446 eopMode: REVERSE velocity: 9 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -3885,7 +4887,21 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A0A0002 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null - id: 097f79f4-bf76-4be0-be28-5acc3bdb0dba name: 10.100.0.4 @@ -4147,6 +5163,9 @@ deployment: - 43.74781 eopMode: LOOP velocity: 20 + radius: null + d2dInRange: null + poaInRange: null wireless: true wirelessType: 'wifi,5g,4g' meta: @@ -4155,7 +5174,30 @@ deployment: latencyDistribution: Normal throughputDl: 1000 throughputUl: 1000 + latency: null + latencyVariation: null + throughput: null + packetLoss: null macId: 005C0A640004 + isExternal: null + networkLocationsInRange: null + connected: null + dataNetwork: null + userMeta: null + processes: null + linkLatency: null + linkLatencyVariation: null + linkThroughput: null + linkPacketLoss: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa5GConfig: null + poaWifiConfig: null - id: 3fbf9ec8-3932-455c-8352-0d06b7bb7a15 name: 5g-small-cell-13 @@ -4165,6 +5207,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: 0D0D0D0D geoData: @@ -4174,6 +5219,21 @@ deployment: - 7.431907 - 43.74543 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 80e3b677-56cb-495c-b798-e19f96d491b9 name: 5g-small-cell-14 @@ -4183,6 +5243,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: 0E0E0E0E geoData: @@ -4192,6 +5255,21 @@ deployment: - 7.431824 - 43.74787 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: dcb66c87-1854-4c8e-ae88-72b14df9aaff name: 5g-small-cell-15 @@ -4201,6 +5279,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: 0F0F0F0F geoData: @@ -4210,6 +5291,21 @@ deployment: - 7.433529 - 43.74865 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 10b048d1-2fba-486d-89a0-d1a3191b90b4 name: 5g-small-cell-16 @@ -4219,6 +5315,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '010101010' geoData: @@ -4228,6 +5327,21 @@ deployment: - 7.434421 - 43.749107 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 35602880-9727-4ed6-8f53-fe0ffab22cb4 name: 5g-small-cell-17 @@ -4237,6 +5351,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '111111111' geoData: @@ -4246,6 +5363,21 @@ deployment: - 7.437487 - 43.7487 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 4aef0f33-51d2-472c-8441-b5c55f0de626 name: 5g-small-cell-18 @@ -4255,6 +5387,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '212121212' geoData: @@ -4264,6 +5399,21 @@ deployment: - 7.438839 - 43.749706 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 3396c6ae-28f8-4c8b-ba12-9991bddeed61 name: 5g-small-cell-19 @@ -4273,6 +5423,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '313131313' geoData: @@ -4282,6 +5435,21 @@ deployment: - 7.4371 - 43.750282 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null - id: 246f3830-3b56-4359-9452-b17f34426888 name: 5g-small-cell-20 @@ -4291,6 +5459,9 @@ deployment: latencyVariation: 1 throughputDl: 1000 throughputUl: 1000 + latencyDistribution: null + throughput: null + packetLoss: null poa5GConfig: cellId: '414141414' geoData: @@ -4300,3 +5471,45 @@ deployment: - 7.436006 - 43.749382 radius: 100 + path: null + eopMode: null + velocity: null + d2dInRange: null + poaInRange: null + terminalLinkLatency: null + terminalLinkLatencyVariation: null + terminalLinkThroughput: null + terminalLinkPacketLoss: null + meta: null + userMeta: null + cellularPoaConfig: null + poa4GConfig: null + poaWifiConfig: null + physicalLocations: null + interFogLatency: null + interFogLatencyVariation: null + interFogThroughput: null + interFogPacketLoss: null + interEdgeLatency: null + interEdgeLatencyVariation: null + interEdgeThroughput: null + interEdgePacketLoss: null + edgeFogLatency: null + edgeFogLatencyVariation: null + edgeFogThroughput: null + edgeFogPacketLoss: null + userMeta: null + interZoneLatency: null + interZoneLatencyVariation: null + interZoneThroughput: null + interZonePacketLoss: null + meta: null + userMeta: null + interDomainLatency: null + interDomainLatencyVariation: null + interDomainThroughput: null + interDomainPacketLoss: null + meta: null +id: null +description: null +config: null -- GitLab From dbb583f495ea73688d499bd7b6a3f1a1832bee98 Mon Sep 17 00:00:00 2001 From: Ikram ul Haq Date: Sun, 15 Jun 2025 10:56:21 +0000 Subject: [PATCH 55/58] Updated readme as per latest changes done in the STF678 --- README.md | 88 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 2f64466..f5dfe95 100644 --- a/README.md +++ b/README.md @@ -40,11 +40,11 @@ The following procedure should be used to install a new MEC Sandbox deployment. ### Prerequisites MEC Sandbox has the following prerequisites: -1. MEC Sandbox (AdvantEDGE + MEC Sandbox frontend) VM: +1. MEC Sandbox (etsi-mec-sandbox + etsi-mec-sandbox-frontend) VM: - [Hardware requirements](https://interdigitalinc.github.io/AdvantEDGE/docs/setup/env-hw/) 1. Long-term Storage (MinIO + Thanos Compactor) VM: - [Hardware requirements](https://interdigitalinc.github.io/AdvantEDGE/docs/setup/env-hw/) -1. [AdvantEDGE](https://interdigitalinc.github.io/AdvantEDGE/) runtime & development environments on both VMs +1. [etsi-mec-sandbox](https://interdigitalinc.github.io/AdvantEDGE/) runtime & development environments on both VMs - Install [runtime environment](https://interdigitalinc.github.io/AdvantEDGE/docs/setup/env-runtime/) - Install [development environment](https://interdigitalinc.github.io/AdvantEDGE/docs/setup/env-dev/) 1. OAuth Applications using external providers @@ -58,6 +58,7 @@ MEC Sandbox has the following prerequisites: - You can also add an application logo if you want users to see one during authentication - Once created, keep note of the OAuth App Client ID & Secret; this secret is only temporarily available on GitHub... keep a copy in a safe place! - If you need to generate a new secret the MEC Sandbox will have to be updated accordingly + - Enable Device Flow to use API driven sandbox - **GitLab:** - gitlab.com User Account --> Settings --> Applications --> Add new application - _Name:_ ETSI MEC Sandbox @@ -66,6 +67,7 @@ MEC Sandbox has the following prerequisites: - _Scopes:_ read_user - **NOTES:** - Once created, keep note of the OAuth App Client ID & Secret + - Enable Device Flow to use API driven sandbox 1. Python Installation - Install Python2: - Ubuntu 18.04: `sudo apt install python-minimal` @@ -116,30 +118,30 @@ $ showmount -e ### Deploy Long-term Storage (MinIO + Thanos Compactor) -1. Clone AdvantEDGE repository: - - Fetch required AdvantEDGE baseline: - - Clone AdvantEDGE repo to the Long-term Storage VM +1. Clone [etsi-mec-sandbox](https://labs.etsi.org/rep/mec/etsi-mec-sandbox) repository: + - Fetch required etsi-mec-sandbox baseline: + - Clone etsi-mec-sandbox repo to the Long-term Storage VM - Place repo in home folder - - Checkout the required AdvantEDGE version tag + - Checkout the required etsi-mec-sandbox version tag 1. Configure Long-term Storage: - Configure object store: - - `vi ~/AdvantEDGE/config/secrets.yaml` + - `vi ~/etsi-mec-sandbox/config/secrets.yaml` - Set minio _accessKey_ to object store access key value (minimum 3 chars) - Set minio _secretKey_ to object store secret key value (minimum 8 chars) - - `vi ~/AdvantEDGE/config/objstore-thanos.yaml` + - `vi ~/etsi-mec-sandbox/config/objstore-thanos.yaml` - Set _endpoint_ to VM FQDN - **NOTE:** Make sure _/etc/hosts_ file contains entry for VM FQDN that points to VM private IP address - Set _access\_key_ to object store access key value - Set _secret\_key_ to object store secret key value - Configure deployment: - - `vi ~/AdvantEDGE/config/long-term-storage-repocfg.yaml` + - `vi ~/etsi-mec-sandbox/config/long-term-storage-repocfg.yaml` - Set uid & gid - Set host name to FQDN - Set Thanos compactor retention times - Overwrite repocfg file with provided long-term storage repocfg: - - `cp ~/AdvantEDGE/config/long-term-storage-repocfg.yaml ~/AdvantEDGE/.meepctl-repocfg.yaml` + - `cp ~/etsi-mec-sandbox/config/long-term-storage-repocfg.yaml ~/etsi-mec-sandbox/.meepctl-repocfg.yaml` - Configure MinIO helm chart: - - `vi ~/AdvantEDGE/charts/minio/values.yaml` + - `vi ~/etsi-mec-sandbox/charts/minio/values.yaml` - _securityContext_: - Set _runAsUser_ to uid - Set _runAsGroup_ to gid @@ -148,16 +150,16 @@ $ showmount -e - MinIO: - Install Python as described in the prerequisites - Create secrets: - - Ubuntu 18.04: `python ~/AdvantEDGE/config/configure-secrets.py set ~/AdvantEDGE/config/secrets.yaml` - - Ubuntu 20.04: `python3 ~/AdvantEDGE/config/configure-secrets.py set ~/AdvantEDGE/config/secrets.yaml` + - Ubuntu 18.04: `python ~/etsi-mec-sandbox/config/configure-secrets.py set ~/etsi-mec-sandbox/config/secrets.yaml` + - Ubuntu 20.04: `python3 ~/etsi-mec-sandbox/config/configure-secrets.py set ~/etsi-mec-sandbox/config/secrets.yaml` - Thanos: - - `~/AdvantEDGE/config/configure-objstore-secrets.sh` + - `~/etsi-mec-sandbox/config/configure-objstore-secrets.sh` - **NOTE:** Once the kubernetes secrets have been created, it is recommended to remove the config files containing the clear-text secrets 1. Deploy MinIO & Thanos Compactor: - Build & Configure meepctl: - - `~/AdvantEDGE/go-apps/meepctl/install.sh` + - `~/etsi-mec-sandbox/go-apps/meepctl/install.sh` - `meepctl config ip ` - - `meepctl config gitdir ` + - `meepctl config gitdir ` - Deploy dependency pods: - `meepctl deploy dep` - Deploy Core pods: @@ -171,32 +173,32 @@ $ showmount -e - thanos - thanos-archive -### Build & Deploy MEC Sandbox (AdvantEDGE + MEC Sandbox Frontend) +### Build & Deploy MEC Sandbox (etsi-mec-sandbox + etsi-mec-sandbox-frontend) -1. Clone MEC Sandbox & AdvantEDGE repositories: - - Fetch required MEC Sandbox baseline: +1. Clone [etsi-mec-sandbox-frontend](https://labs.etsi.org/rep/mec/etsi-mec-sandbox-frontend) & [etsi-mec-sandbox](https://labs.etsi.org/rep/mec/etsi-mec-sandbox) repositories: + - Fetch required etsi-mec-sandbox-frontend: - Clone this repo to the MEC Sandbox deployment VM - Place repo in home folder - - Fetch required AdvantEDGE baseline: - - Clone AdvantEDGE repo to the MEC Sandbox deployment VM + - Fetch required etsi-mec-sandbox baseline: + - Clone etsi-mec-sandbox repo to the MEC Sandbox deployment VM - Place repo in home folder - - Checkout the required AdvantEDGE version tag + - Checkout the required etsi-mec-sandbox version tag 1. Configure MEC Sandbox: - Configure object store: - - `vi ~/mec-sandbox/config/objstore-thanos.yaml` and `vi ~/mec-sandbox/config/objstore-thanos-archive.yaml` + - `vi ~/etsi-mec-sandbox-frontend/config/objstore-thanos.yaml` and `vi ~/etsi-mec-sandbox-frontend/config/objstore-thanos-archive.yaml` - Set _endpoint_ to long-term storage VM FQDN - **NOTE:** Make sure _/etc/hosts_ file contains entry for VM FQDN that points to VM private IP address (if on same local network) - Set _access\_key_ to object store access key value - Set _secret\_key_ to object store secret key value - - `vi ~/mec-sandbox/config/objstore-influx.cfg` + - `vi ~/etsi-mec-sandbox-frontend/config/objstore-influx.cfg` - Set _aws\_access\_key\_id_ to object store access key value - Set _aws\_secret\_access\_key_ to object store secret key value - Configure session & OAuth secrets: - - `vi ~/mec-sandbox/config/secrets.yaml` + - `vi ~/etsi-mec-sandbox-frontend/config/secrets.yaml` - Set a unique session encryption key - Set the OAuth provider client ID & secrets using the values from the OAuth Applications - Configure deployment: - - `vi ~/mec-sandbox/config/.meepctl-repocfg.yaml` + - `vi ~/etsi-mec-sandbox-frontend/config/.meepctl-repocfg.yaml` - Set Prometheus external labels - **NOTE:** This uniquely identifies Prometheus data sources in the long-term storage data buckets - Configure Alert Manager slack channel webhook: @@ -211,33 +213,35 @@ $ showmount -e - Copy the `Webhook URL` - **NOTE:** There should be a message in the selected slack channel indicating that an incoming webhook has be added - Set webhook url in Prometheus values override: - - `vi ~/mec-sandbox/config/values/meep-prometheus.yaml` + - `vi ~/etsi-mec-sandbox-frontend/config/values/meep-prometheus.yaml` - Set `slack_api_url` to your slack channel webhook url - Set `channel` to your slack channel 1. Build & Deploy STF Frontend: - SSH to MEC Sandbox deployment VM - Build STF Frontend: - - `cd ~/mec-sandbox` + - `cd ~/etsi-mec-sandbox-frontend` - `./build.sh` - Deploy STF Frontend & Configuration files: - `./deploy.sh` - **NOTE:** This updates the `~/.meep/user/` folder with the user frontend, sandbox swagger UI, and user chart values.yaml overrides - - **NOTE:** This also copies the AdvantEDGE configuration files to their respective locations in your local AdvantEDGE clone `~/AdvantEDGE/`. Running `git status` in your AdvantEDGE clone will list the updated (or new) files. + - **NOTE:** This also copies the etsi-mec-sandbox configuration files to their respective locations in your local etsi-mec-sandbox clone `~/etsi-mec-sandbox/`. Running `git status` in your etsi-mec-sandboxE clone will list the updated (or new) files. 1. Create Secrets: - Session & OAuth: - Install Python as described in the prerequisites - Create secrets: - - Ubuntu 18.04: `python ~/AdvantEDGE/config/configure-secrets.py set ~/AdvantEDGE/config/secrets.yaml` - - Ubuntu 20.04: `python3 ~/AdvantEDGE/config/configure-secrets.py set ~/AdvantEDGE/config/secrets.yaml` + - Ubuntu 18.04: `python ~/etsi-mec-sandbox/config/configure-secrets.py set ~/etsi-mec-sandbox/config/secrets.yaml` + - Ubuntu 20.04: `python3 ~/etsi-mec-sandbox/config/configure-secrets.py set ~/etsi-mec-sandbox/config/secrets.yaml` - Object Store (Thanos & Influx): - - `~/AdvantEDGE/config/configure-objstore-secrets.sh` + - `~/etsi-mec-sandbox/config/configure-objstore-secrets.sh` - **NOTE:** Once the kubernetes secrets have been created, it is recommended to remove the config files containing the clear-text secrets -1. Build & Deploy AdvantEDGE: +1. Build & Deploy Sandbox: - For more details see [AdvantEDGE Deployment Workflow](https://interdigitalinc.github.io/AdvantEDGE/docs/platform-mgmt/mgmt-workflow/) + - Build demo4 + - `~/etsi-mec-sandbox/examples/demo4-ue/build-demo4-ue.sh` - Build and Configure meepctl: - - `~/AdvantEDGE/go-apps/meepctl/install.sh` + - `~/etsi-mec-sandbox/go-apps/meepctl/install.sh` - `meepctl config ip ` - - `meepctl config gitdir ` + - `meepctl config gitdir ` - Deploy dependency pods: - `meepctl deploy dep` - Build & Dockerize: @@ -277,7 +281,7 @@ If necessary, configure the MEC Sandbox scenarios as follows: ## Upgrade MEC Sandbox The following procedure should be used to upgrade a running MEC Sandbox deployment. -1. Stop AdvantEDGE +1. Stop MEC Sandbox - Delete user sandboxes - Using AdvantEDGE frontend: - Login as admin @ https://try-mec.etsi.org @@ -292,27 +296,27 @@ The following procedure should be used to upgrade a running MEC Sandbox deployme 1. Pull latest updates from MEC Sandbox & AdvantEDGE repositories 1. Configure MEC Sandbox deployment: - Configure deployment: - - `vi ~/mec-sandbox/config/.meepctl-repocfg.yaml` + - `vi ~/etsi-mec-sandbox-frontend/config/.meepctl-repocfg.yaml` - Set Prometheus external labels - **NOTE:** This uniquely identifies Prometheus data sources in the long-term storage data buckets - Configure Alert Manager slack channel webhook: - Set webhook url in Prometheus values override: - - `vi ~/mec-sandbox/config/values/meep-prometheus.yaml` + - `vi ~/etsi-mec-sandbox-frontend/config/values/meep-prometheus.yaml` - Set `slack_api_url` to your slack channel webhook url - Set `channel` to your slack channel 1. Build & Deploy STF Frontend: - SSH to MEC Sandbox deployment VM - Build STF Frontend: - - `cd ~/mec-sandbox` + - `cd ~/etsi-mec-sandbox-frontend` - `./build.sh` - Deploy STF Frontend & Configuration files: - `./deploy.sh` - **NOTE:** This updates the `~/.meep/user/` folder with the user frontend, sandbox swagger UI, and user chart values.yaml overrides - - **NOTE:** This also copies the AdvantEDGE configuration files to their respective locations in your local AdvantEDGE clone `~/AdvantEDGE/`. Running `git status` in your AdvantEDGE clone will list the updated (or new) files. -1. Build & Deploy AdvantEDGE: + - **NOTE:** This also copies the etsi-mec-sandbox configuration files to their respective locations in your local AdvantEDGE clone `~/etsi-mec-sandbox/`. Running `git status` in your AdvantEDGE clone will list the updated (or new) files. +1. Build & Deploy MEC Sandbox: - For more details see [AdvantEDGE Deployment Workflow](https://interdigitalinc.github.io/AdvantEDGE/docs/platform-mgmt/mgmt-workflow/) - Build meepctl: - - `~/AdvantEDGE/go-apps/meepctl/install.sh` + - `~/etsi-mec-sandbox/go-apps/meepctl/install.sh` - Deploy dependency pods: - `meepctl deploy dep` - Build & Dockerize: -- GitLab From b60e381bd4edebe2b365b8cce6f977ff54812bf0 Mon Sep 17 00:00:00 2001 From: Ikram ul Haq Date: Sun, 15 Jun 2025 11:13:59 +0000 Subject: [PATCH 56/58] Update: meepctl repo config to dockerize changes for updated federation api --- config/.meepctl-repocfg.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 4158288..374f529 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -942,6 +942,23 @@ repo: docker-data: # location of entry script 'entrypoint.sh': go-apps/meep-federation/entrypoint.sh + meep-mosquitto: + # location of source code + src: go-apps/meep-mosquitto + bin: bin/meep-mosquitto + # enable meepctl build + build: false + # enable meepctl dockerize + dockerize: true + # enable meepctl deploy/delete + deploy: false + # supports code coverage measurement when built in codecov mode + codecov: false + # supports linting + lint: false + docker-data: + 'mosquitto.conf': go-apps/meep-mosquitto/mosquitto.conf + 'listener.conf': go-apps/meep-mosquitto/listener.conf #------------------------------ # Dependencies -- GitLab From 35b900dcb9a8a53e91a236d1621bebaa79c7fcc1 Mon Sep 17 00:00:00 2001 From: Miguel Angel Reina Ortega Date: Wed, 16 Jul 2025 11:23:56 +0200 Subject: [PATCH 57/58] Last changes for try-mec in production --- config/.meepctl-repocfg.yaml | 76 +++++++++++++++---- .../js/containers/home/home-page-container.js | 2 +- .../frontend/src/js/util/scenario-utils.js | 2 +- 3 files changed, 62 insertions(+), 18 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 374f529..6137a5d 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2022 The AdvantEDGE Authors +# Copyright (c) 2024 The AdvantEDGE Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ version: 1.10.0 repo: - name: AdvantEDGE + name: etsi-mec-sandbox #------------------------------ # Deployment @@ -23,9 +23,9 @@ repo: # permissions permissions: # user id - uid: 1000 + uid: 1001 # group id - gid: 1000 + gid: 1001 # user supplied resources user: @@ -40,7 +40,7 @@ repo: # host name host: try-mec.etsi.org # enable https only (redirect http requests to https port) - https-only: false + https-only: true # bind to host ports (true) or node ports (false) host-ports: true # http port number @@ -102,9 +102,9 @@ repo: # Influx configuration influx: # enable influx data backups - enabled: false + enabled: true # object store url - url: https://metrics.try-mec.etsi.org/ + url: https://metrics.mec-platform.etsi.org/ # object store configuration secret secret: meep-influx-objstore-config # Number of days to retain daily data backups @@ -120,7 +120,7 @@ repo: # prometheus environment (dev|prod) promenv: prod # unique deployment identifier - replica: platform-ip + replica: 172.29.10.56 # Thanos long-term storage thanos: # enable Thanos @@ -152,11 +152,11 @@ repo: # 1h downsampled data retention resolution-1h: 10y # Thanos long-term storage archive - #thanos-archive: + thanos-archive: # enable Thanos archive - # enabled: true + enabled: false # archive object store configuration secret - #secret: meep-thanos-archive-objstore-config + secret: meep-thanos-archive-objstore-config # Garbage Collection configuration gc: @@ -290,6 +290,7 @@ repo: core-pods: - meep-mon-engine - meep-platform-ctrl + - meep-sandbox-api - meep-virt-engine - meep-webhook # list of sandbox pods to monitor @@ -351,6 +352,39 @@ repo: swagger: js-apps/meep-swagger-ui # location of AdvantEDGE frontend frontend: bin/meep-frontend + meep-sandbox-api: + # location of source code + src: go-apps/meep-sandbox-api + # location of binary + bin: bin/meep-sandbox-api + # location of deployment chart + chart: charts/meep-sandbox-api + # user supplied value file located @ .meep/user/values (use below file name) + chart-user-values: meep-sandbox-api.yaml + # enable meepctl build + build: true + # enable meepctl dockerize + dockerize: true + # enable meepctl deploy/delete + deploy: true + # supports code coverage measurement when built in codecov mode + codecov: true + # supports linting + lint: true + # location of API specifications + api: + - name: 'AdvantEDGE Platform Controller REST API' + file: go-apps/meep-sandbox-api/api/swagger.yaml + # location of user supplied API specifications + user-api: + # resources available to docker container image + docker-data: + # location of entry script + 'entrypoint.sh': go-apps/meep-sandbox-api/entrypoint.sh + # location of Swagger UI + #swagger: js-apps/meep-swagger-ui + # location of AdvantEDGE frontend + #frontend: bin/meep-frontend meep-virt-engine: # location of source code src: go-apps/meep-virt-engine @@ -523,7 +557,7 @@ repo: file: go-apps/meep-app-enablement/api/app-support/swagger.yaml - name: 'AdvantEDGE MEC Service Management REST API' file: go-apps/meep-app-enablement/api/service-mgmt/swagger.yaml - - name: 'AdvantEDGE MEC service management realized by CAPIF APIs' + - name: 'AdvantEDGE MEC Service management realized by CAPIF APIs' file: go-apps/meep-app-enablement/api/capif-mgmt/swagger.yaml # location of user supplied API specifications user-api: @@ -531,7 +565,7 @@ repo: file: config/api/app-support.yaml - name: 'MEC Service Management API' file: config/api/service-mgmt.yaml - - name: 'MEC Capif Management API' + - name: 'MEC CAPIF Management API' file: config/api/capif-mgmt.yaml # resources available to docker container image docker-data: @@ -1102,7 +1136,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: false + deploy: true # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1113,7 +1147,7 @@ repo: # enable meepctl dockerize -> deps are never dockerized dockerize: false # enable meepctl deploy/delete - deploy: false + deploy: true # location of deployment chart chart: charts/thanos # user supplied value file located @ .meep/user/values (use below file name) @@ -1310,7 +1344,12 @@ repo: src: go-packages/meep-dai-client # supports linting lint: false - meep-wais-client: + meep-dai-mgr: + # location of source code + src: go-packages/meep-dai-mgr + # supports linting + lint: false +] meep-wais-client: # location of source code src: go-packages/meep-wais-client # supports linting @@ -1368,6 +1407,11 @@ repo: src: js-packages/meep-platform-ctrl-client # supports linting lint: false + meep-sandbox-api-client: + # location of source code + src: go-packages/meep-sandbox-api-client + # supports linting + lint: false meep-sandbox-ctrl-client: # location of source code src: js-packages/meep-sandbox-ctrl-client diff --git a/js-apps/frontend/src/js/containers/home/home-page-container.js b/js-apps/frontend/src/js/containers/home/home-page-container.js index ad9b065..5e84c92 100644 --- a/js-apps/frontend/src/js/containers/home/home-page-container.js +++ b/js-apps/frontend/src/js/containers/home/home-page-container.js @@ -158,4 +158,4 @@ const ConnectedHomePageContainer = connect( mapDispatchToProps )(HomePageContainer); -export default ConnectedHomePageContainer; \ No newline at end of file +export default ConnectedHomePageContainer; diff --git a/js-apps/frontend/src/js/util/scenario-utils.js b/js-apps/frontend/src/js/util/scenario-utils.js index ca021a0..fb07e97 100644 --- a/js-apps/frontend/src/js/util/scenario-utils.js +++ b/js-apps/frontend/src/js/util/scenario-utils.js @@ -648,7 +648,7 @@ export function parseEdgeApps(scenario) { img: proc.image, mepName: pl.name, env: proc.environment, - url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20Capif%20Management%20API', + url: 'api/?urls.primaryName='+pl.name+'%20-%20MEC%20CAPIF%20Management%20API', path: pl.name+'/service-apis/v1', pseudoName: 'MEC-CAPIF Service Management (011) on ' + pl.name, dropDownName: 'MEC-CAPIF Service Management (011)', -- GitLab From 4ea0393b6f39701b987295e054eaf90be7944305 Mon Sep 17 00:00:00 2001 From: Miguel Angel Reina Ortega Date: Wed, 16 Jul 2025 11:34:52 +0200 Subject: [PATCH 58/58] More changes from try-mec in prod --- config/.meepctl-repocfg.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/config/.meepctl-repocfg.yaml b/config/.meepctl-repocfg.yaml index 6137a5d..4fe5371 100644 --- a/config/.meepctl-repocfg.yaml +++ b/config/.meepctl-repocfg.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2024 The AdvantEDGE Authors +_# Copyright (c) 2024 The AdvantEDGE Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -102,7 +102,7 @@ repo: # Influx configuration influx: # enable influx data backups - enabled: true + enabled: false # object store url url: https://metrics.mec-platform.etsi.org/ # object store configuration secret @@ -124,7 +124,7 @@ repo: # Thanos long-term storage thanos: # enable Thanos - enabled: false + enabled: true # object store configuration secret secret: meep-thanos-objstore-config # query component @@ -154,7 +154,7 @@ repo: # Thanos long-term storage archive thanos-archive: # enable Thanos archive - enabled: false + enabled: true # archive object store configuration secret secret: meep-thanos-archive-objstore-config @@ -993,7 +993,6 @@ repo: docker-data: 'mosquitto.conf': go-apps/meep-mosquitto/mosquitto.conf 'listener.conf': go-apps/meep-mosquitto/listener.conf - #------------------------------ # Dependencies #------------------------------ @@ -1349,7 +1348,7 @@ repo: src: go-packages/meep-dai-mgr # supports linting lint: false -] meep-wais-client: + meep-wais-client: # location of source code src: go-packages/meep-wais-client # supports linting -- GitLab