{ "openapi": "3.1.0", "info": { "title": "MEC Application Support API", "version": "3.1.1", "description": "The ETSI MEC ISG MEC011 MEC Application Support API described using OpenAPI", "license": { "name": "BSD-3-Clause", "url": "https://forge.etsi.org/legal-matters" }, "contact": { "email": "cti_support@etsi.org" } }, "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" }, "tags": [ { "name": "appTrafficRules" }, { "name": "appDnsRules" }, { "name": "appSubscriptions" }, { "name": "appConfirmTermination" }, { "name": "appConfirmReady" }, { "name": "timing" }, { "name": "callbacks" }, { "name": "appRegistrations" } ], "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "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": ["appTrafficRules"], "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.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Upon success, a response message content containing an array of the TrafficRules is returned.", "headers": {}, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TrafficRule" }, "description": "", "examples": [ [ { "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" } ] ], "contentMediaType": "application/json" }, "examples": { "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/applications/{appInstanceId}/traffic_rules/{trafficRuleId}": { "get": { "tags": ["appTrafficRules"], "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.", "required": true, "style": "simple", "schema": { "type": "string" } }, { "name": "trafficRuleId", "in": "path", "description": "Represents a traffic rule.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Upon success, a response message content containing the TrafficRules is returned.", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrafficRule" }, "examples": { "TrafficRule": { "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" } } } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "put": { "tags": ["appTrafficRules"], "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": "Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager.", "required": true, "style": "simple", "schema": { "type": "string" } }, { "name": "trafficRuleId", "in": "path", "description": "Represents a traffic rule.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "requestBody": { "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": { "$ref": "#/components/schemas/TrafficRule" } } }, "required": true }, "responses": { "200": { "description": "Upon success, a response message content containing data type describing the updated TrafficRule is returned.", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrafficRule" }, "examples": { "TrafficRule": { "value": { "trafficRuleId": "TrafficRule123", "serName": "ExampleService", "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": [ { "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } }, "412": { "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": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/applications/{appInstanceId}/dns_rules": { "get": { "tags": ["appDnsRules"], "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.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Upon success, a response message content containing an array of the DnsRules is returned.", "headers": {}, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DnsRule" }, "description": "", "examples": [ [ { "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" } ] ], "contentMediaType": "application/json" }, "examples": { "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/applications/{appInstanceId}/dns_rules/{dnsRuleId}": { "get": { "tags": ["appDnsRules"], "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.", "required": true, "style": "simple", "schema": { "type": "string" } }, { "name": "dnsRuleId", "in": "path", "description": "Represents a DNS rule.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Upon success, a response message content containing the DnsRules is returned.", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DnsRule" }, "examples": { "DnsRule": { "value": { "dnsRuleId": "DnsRule1", "domainName": "www.example.com", "ipAddressType": "IP_V4", "ipAddress": "146.241.7.3", "ttl": 300, "state": "ACTIVE" } } } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "put": { "tags": ["appDnsRules"], "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.", "required": true, "style": "simple", "schema": { "type": "string" } }, { "name": "dnsRuleId", "in": "path", "description": "Represents a DNS rule.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "requestBody": { "description": "The updated \"state\" is included in the message content of the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DnsRule" } } }, "required": true }, "responses": { "200": { "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" }, "examples": { "DnsRule": { "value": { "dnsRuleId": "DnsRule1", "domainName": "www.example.com", "ipAddressType": "IP_V4", "ipAddress": "146.241.7.3", "ttl": 300, "state": "ACTIVE" } } } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } }, "412": { "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": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/applications/{appInstanceId}/subscriptions": { "get": { "tags": ["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 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.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "responses": { "200": { "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "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 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.", "required": true, "style": "simple", "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/AppTerminationNotificationSubscription" } } }, "required": true }, "responses": { "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", "content": { "text/plain": { "schema": { "type": "string", "description": "The resource URI of the created resource", "contentMediaType": "text/plain" } } } } }, "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "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"], "summary": "Create callback", "requestBody": { "$ref": "#/components/requestBodies/AppTerminationNotification" }, "responses": { "200": { "description": "Expected responses from callback consumer, if it accepts the callback" } } } } } } }, "parameters": [] }, "/applications/{appInstanceId}/subscriptions/{subscriptionId}": { "get": { "tags": ["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", "schema": { "type": "string" } }, { "name": "subscriptionId", "in": "path", "description": "Represents a subscription to the notifications from the MEC platform.", "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/AppTerminationNotificationSubscription" } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "delete": { "tags": ["appSubscriptions"], "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.", "required": true, "style": "simple", "schema": { "type": "string" } }, { "name": "subscriptionId", "in": "path", "description": "Represents a subscription to the notifications from the MEC platform.", "required": true, "style": "simple", "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.", "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/applications/{appInstanceId}/confirm_termination": { "post": { "tags": ["appConfirmTermination"], "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.", "required": true, "style": "simple", "schema": { "type": "string" } } ], "requestBody": { "description": "Message content in the request contains the operational action the application instance is responding to.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationConfirmation" } } }, "required": false }, "responses": { "204": { "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } }, "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/applications/{appInstanceId}/confirm_ready": { "post": { "tags": ["appConfirmReady"], "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.", "required": true, "style": "simple", "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } }, "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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/registrations": { "post": { "tags": ["appRegistrations"], "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", "contentMediaType": "text/plain" } } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/registrations/{appInstanceId}": { "get": { "tags": ["appRegistrations"], "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "put": { "tags": ["appRegistrations"], "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "delete": { "tags": ["appRegistrations"], "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/timing/timing_caps": { "get": { "tags": ["timing"], "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 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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] }, "/timing/current_time": { "get": { "tags": ["timing"], "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 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.", "headers": {}, "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "type": "object", "description": "Empty schema", "contentMediaType": "text/plain" } } } }, "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", "contentMediaType": "text/plain" } } } } }, "deprecated": false }, "parameters": [] } }, "components": { "schemas": { "AppReadyConfirmation": { "title": "AppReadyConfirmation", "required": ["indication"], "type": "object", "properties": { "indication": { "const": "READY", "type": "string", "description": "Indication about the MEC application instance.", "examples": ["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": ["appName"], "type": "object", "properties": { "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.", "examples": ["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.", "examples": ["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.", "examples": ["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.", "examples": ["ID1"] }, "endpoint": { "oneOf": [ { "$ref": "#/components/schemas/EndPointInfo.Uris" }, { "$ref": "#/components/schemas/EndPointInfo.Fqdn" }, { "$ref": "#/components/schemas/EndPointInfo.Addresses" }, { "$ref": "#/components/schemas/EndPointInfo.Alternative" } ], "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.\nDefault to FALSE if absent.", "examples": [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", "required": ["subscription"], "type": "object", "properties": { "subscription": { "$ref": "#/components/schemas/LinkType" }, "confirmTermination": { "$ref": "#/components/schemas/LinkType.ConfirmTermination" } }, "description": "Object containing hyperlinks related to the resource." }, "AppTerminationNotification": { "title": "AppTerminationNotification", "required": [ "notificationType", "operationAction", "maxGracefulTimeout", "_links" ], "type": "object", "properties": { "notificationType": { "type": "string", "description": "Shall be set to AppTerminationNotification.", "examples": ["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.", "contentEncoding": "int32", "examples": [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." }, "AppTerminationNotificationSubscription": { "title": "AppTerminationNotificationSubscription", "required": [ "subscriptionType", "callbackReference", "_links", "appInstanceId" ], "type": "object", "properties": { "subscriptionType": { "type": "string", "description": "Shall be set to AppTerminationNotificationSubscription.", "examples": ["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." }, "_links": { "$ref": "#/components/schemas/Self" }, "appInstanceId": { "type": "string", "description": "It is used as the filtering criterion for the subscribed events.", "examples": ["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": ["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", "contentEncoding": "int32", "examples": [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", "contentEncoding": "int32", "examples": [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." }, "DestinationInterface.InterfaceType": { "title": "DestinationInterface.InterfaceType", "enum": ["TUNNEL", "MAC", "IP"], "type": "string", "description": "Type of the interface", "examples": ["TUNNEL"] }, "DestinationInterface": { "title": "DestinationInterface", "required": ["interfaceType"], "type": "object", "properties": { "interfaceType": { "$ref": "#/components/schemas/DestinationInterface.InterfaceType" }, "tunnelInfo": { "$ref": "#/components/schemas/TunnelInfo" }, "srcMacAddress": { "type": "string", "description": "Source address identifies the MAC address of the interface", "examples": ["02-00-00-00-00-00"] }, "dstMacAddress": { "type": "string", "description": "Source address identifies the MAC address of the interface", "examples": ["02-00-00-00-00-00"] }, "dstIpAddress": { "type": "string", "description": "IP address of the remote destination", "examples": ["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." }, "DnsRule.IpAddressType": { "title": "DnsRule.IpAddressType", "enum": ["IP_V6", "IP_V4"], "type": "string", "description": "IP address type", "examples": ["IP_V6"] }, "DnsRule.State": { "title": "DnsRule.State", "enum": ["ACTIVE", "INACTIVE"], "type": "string", "description": "DNS rule state. This attribute may be updated using HTTP PUT method", "examples": ["ACTIVE"] }, "DnsRule": { "title": "DnsRule", "required": [ "dnsRuleId", "domainName", "ipAddressType", "ipAddress", "state" ], "type": "object", "properties": { "dnsRuleId": { "type": "string", "description": "Identifies the DNS Rule", "examples": ["dnsRule1"] }, "domainName": { "type": "string", "description": "FQDN resolved by the DNS rule", "examples": ["www.example.com"] }, "ipAddressType": { "$ref": "#/components/schemas/DnsRule.IpAddressType" }, "ipAddress": { "type": "string", "description": "IP address associated with the FQDN resolved by the DNS rule", "examples": ["192.0.2.0"] }, "ttl": { "type": "integer", "description": "Time to live value", "contentEncoding": "int32" }, "state": { "$ref": "#/components/schemas/DnsRule.State" } }, "description": "This type represents the general information of a DNS rule.", "x-etsi-notes": "NOTE:\tIf no ttl value is provided, the DnsRule shall not expire." }, "LinkType": { "title": "LinkType", "type": "object", "properties": { "href": { "type": "string", "description": "URI referring to a resource", "examples": ["/mecAppSuptApi/example"] } }, "description": "This type represents a type of link and may be referenced from data structures" }, "LinkType.ConfirmTermination": { "title": "LinkType.ConfirmTermination", "type": "object", "properties": { "href": { "type": "string", "description": "URI referring to a resource", "examples": ["/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." }, "MecAppSuptApiSubscriptionLinkList.Links": { "title": "MecAppSuptApiSubscriptionLinkList.Links", "required": ["self"], "type": "object", "properties": { "self": { "$ref": "#/components/schemas/LinkType" }, "subscriptions": { "type": "array", "items": { "$ref": "#/components/schemas/MecAppSuptApiSubscriptionLinkList.Subscription" }, "description": "The MEC application instance's subscriptions" } }, "description": "Self-referring URI." }, "MecAppSuptApiSubscriptionLinkList.Subscription": { "title": "MecAppSuptApiSubscriptionLinkList.Subscription", "required": ["href", "subscriptionType"], "type": "object", "properties": { "href": { "type": "string", "description": "URI referring to a resource", "examples": ["/mecAppSuptApi/example"] }, "subscriptionType": { "type": "string", "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." }, "MecAppSuptApiSubscriptionLinkList": { "title": "MecAppSuptApiSubscriptionLinkList", "required": ["_links"], "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." }, "OperationActionType": { "title": "OperationActionType", "enum": ["STOPPING", "TERMINATING"], "type": "string", "description": "Operation that is being performed on the MEC application instance.", "examples": ["TERMINATING"] }, "ProblemDetails": { "title": "ProblemDetails", "type": "object", "properties": { "type": { "type": "string", "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" }, "status": { "type": "integer", "description": "The HTTP status code for this occurrence of the problem", "contentEncoding": "int32" }, "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" } } }, "Self": { "title": "Self", "required": ["self"], "type": "object", "properties": { "self": { "$ref": "#/components/schemas/LinkType" } }, "description": "Self-referring URI." }, "TimingCaps.NtpServers.AuthenticationOption": { "title": "TimingCaps.NtpServers.AuthenticationOption", "enum": ["NONE", "SYMMETRIC_KEY", "AUTO_KEY"], "type": "string", "description": "NTP authentication option", "examples": ["NONE"] }, "TimingCaps.NtpServers.NtpServerAddrType": { "title": "TimingCaps.NtpServers.NtpServerAddrType", "enum": ["IP_ADDRESS", "DNS_NAME"], "type": "string", "description": "Address type of NTP server", "examples": ["IP_ADDRESS"] }, "TimingCaps.NtpServers": { "title": "TimingCaps.NtpServers", "required": [ "ntpServerAddrType", "ntpServerAddr", "minPollingInterval", "maxPollingInterval", "localPriority", "authenticationOption" ], "type": "object", "properties": { "ntpServerAddrType": { "$ref": "#/components/schemas/TimingCaps.NtpServers.NtpServerAddrType" }, "ntpServerAddr": { "type": "string", "description": "NTP server address", "examples": ["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", "contentEncoding": "int32", "examples": [3] }, "maxPollingInterval": { "type": "integer", "description": "Maximum poll interval for NTP messages, in seconds as a power of two. Range 3 to 17", "contentEncoding": "int32", "examples": [17] }, "localPriority": { "type": "integer", "description": "NTP server local priority", "contentEncoding": "int32", "examples": [1] }, "authenticationOption": { "$ref": "#/components/schemas/TimingCaps.NtpServers.AuthenticationOption" }, "authenticationKeyNum": { "type": "integer", "description": "Authentication key number. This configuration is valid and shall be present if authenticationOption is set to SYMMETRIC_KEY", "contentEncoding": "int32", "examples": [1] } }, "description": "NTP server detail." }, "TimingCaps_PtpMasters": { "title": "TimingCaps_PtpMasters", "required": [ "ptpMasterIpAddress", "ptpMasterLocalPriority", "delayReqMaxRate" ], "type": "object", "properties": { "ptpMasterIpAddress": { "type": "string", "description": "PTP Server (referred to as \"master\" in IEEE 1588-2019) IP Address", "examples": ["192.0.2.0"] }, "ptpMasterLocalPriority": { "type": "integer", "description": "PTP Server (referred to as \"master\" in IEEE 1588-2019 ) local priority", "contentEncoding": "int32", "examples": [1] }, "delayReqMaxRate": { "type": "integer", "description": "Acceptable maximum rate of the Delay_Req messages in packets per second", "contentEncoding": "int32", "examples": [10] } }, "description": "NTP server detail." }, "TimingCaps.TimeStamp": { "title": "TimingCaps.TimeStamp", "required": ["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", "contentEncoding": "int32", "examples": [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", "contentEncoding": "int32", "examples": [0] } }, "description": "time" }, "TimingCaps": { "title": "TimingCaps", "type": "object", "properties": { "timeStamp": { "$ref": "#/components/schemas/TimingCaps.TimeStamp" }, "ntpServers": { "type": "array", "items": { "$ref": "#/components/schemas/TimingCaps.NtpServers" }, "description": "Available NTP servers" }, "ptpMasters": { "type": "array", "items": { "$ref": "#/components/schemas/TimingCaps_PtpMasters" }, "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", "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", "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", "items": { "type": "string" }, "description": "A port or a range of ports" }, "dstPort": { "type": "array", "items": { "type": "string" }, "description": "A port or a range of ports" }, "protocol": { "type": "array", "items": { "type": "string" }, "description": "Specify the protocol of the traffic filter" }, "tag": { "type": "array", "items": { "type": "string" }, "description": "Used for token based traffic rule" }, "srcTunnelAddress": { "type": "array", "items": { "type": "string" }, "description": "Used for GTP tunnel based traffic rule" }, "tgtTunnelAddress": { "type": "array", "items": { "type": "string" }, "description": "Used for GTP tunnel based traffic rule" }, "srcTunnelPort": { "type": "array", "items": { "type": "string" }, "description": "Used for GTP tunnel based traffic rule" }, "dstTunnelPort": { "type": "array", "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).", "contentEncoding": "int32", "examples": [1] }, "dSCP": { "type": "integer", "description": "Used to match all IPv4 packets that have the same Differentiated Services Code Point (DSCP)", "contentEncoding": "int32", "examples": [0] }, "tC": { "type": "integer", "description": "Used to match all IPv6 packets that have the same Traffic Class.", "contentEncoding": "int32", "examples": [1] } }, "description": "This type represents the traffic filter." }, "TrafficRule.Action": { "title": "TrafficRule.Action", "enum": [ "DROP", "FORWARD_DECAPSULATED", "FORWARD_ENCAPSULATED", "PASSTHROUGH", "DUPLICATE_DECAPSULATED", "DUPLICATE_ENCAPSULATED" ], "type": "string", "description": "The action of the MEC host data plane when a packet matches the trafficFilter", "examples": ["DROP"] }, "TrafficRule.FilterType": { "title": "TrafficRule.FilterType", "enum": ["FLOW", "PACKET"], "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", "examples": ["FLOW"] }, "TrafficRule.State": { "title": "TrafficRule.State", "enum": ["ACTIVE", "INACTIVE"], "type": "string", "description": "Contains the traffic rule state. This attribute may be updated using HTTP PUT method", "examples": ["ACTIVE"] }, "TrafficRule": { "title": "TrafficRule", "required": [ "trafficRuleId", "filterType", "priority", "trafficFilter", "action", "state" ], "type": "object", "properties": { "trafficRuleId": { "type": "string", "description": "Identify the traffic rule.", "examples": ["TrafficRule1"] }, "filterType": { "$ref": "#/components/schemas/TrafficRule.FilterType" }, "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.", "contentEncoding": "int32", "examples": [1] }, "trafficFilter": { "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter" }, "description": "" }, "action": { "$ref": "#/components/schemas/TrafficRule.Action" }, "dstInterface": { "type": "array", "items": { "$ref": "#/components/schemas/DestinationInterface" }, "maxItems": 2 }, "state": { "$ref": "#/components/schemas/TrafficRule.State" } }, "description": "This type represents the general information of a traffic rule.", "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." }, "TunnelInfo.TunnelType": { "title": "TunnelInfo.TunnelType", "enum": ["GTP_U", "GRE"], "type": "string", "description": "This type represents the tunnel information.", "examples": ["GTP_U"] }, "TunnelInfo": { "title": "TunnelInfo", "required": ["tunnelType"], "type": "object", "properties": { "tunnelType": { "$ref": "#/components/schemas/TunnelInfo.TunnelType" }, "tunnelDstAddress": { "type": "string", "description": "Destination address of the tunnel", "examples": ["192.127.4.100/32"] }, "tunnelSrcAddress": { "type": "string", "description": "Source address of the tunnel", "examples": ["192.127.4.101/32"] } }, "description": "This type represents the tunnel information." }, "TimeSourceStatus": { "title": "TimeSourceStatus", "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", "examples": ["TRACEABLE"] }, "CategoryRef": { "title": "CategoryRef", "required": ["href", "id", "name", "version"], "type": "object", "properties": { "href": { "type": "string", "description": "Reference of the catalogue", "examples": ["/example/catalogue1"] }, "id": { "type": "string", "description": "Unique identifier of the category", "examples": ["id12345"] }, "name": { "type": "string", "description": "Name of the category, example values include RNI, Location & Bandwidth Management", "examples": ["RNI"] }, "version": { "type": "string", "description": "Category version", "examples": ["version1"] } }, "description": "This type represents the category reference" }, "EndPointInfo.Address": { "title": "EndPointInfo.Address", "required": ["host", "port"], "type": "object", "properties": { "host": { "type": "string", "description": "Host portion of the address", "examples": ["192.0.2.0"] }, "port": { "type": "integer", "description": "Port portion of the address", "contentEncoding": "int32", "examples": [8080] } }, "description": "A IP address and port pair" }, "EndPointInfo.Addresses": { "title": "EndPointInfo.Addresses", "required": ["addresses"], "type": "object", "properties": { "addresses": { "type": "array", "items": { "$ref": "#/components/schemas/EndPointInfo.Address" }, "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." }, "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.Uris": { "title": "EndPointInfo.Uris", "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." }, "EndPointInfo.Fqdn": { "title": "EndPointInfo.Fqdn", "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].\nThe 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", "examples": ["JSON"] }, "SecurityInfo": { "title": "SecurityInfo", "type": "object", "properties": { "oAuth2Info": { "$ref": "#/components/schemas/SecurityInfo.OAuth2Info" } }, "description": "This type represents security information related to a transport" }, "SecurityInfo.OAuth2Info": { "title": "SecurityInfo.OAuth2Info", "required": ["grantTypes", "tokenEndpoint"], "type": "object", "properties": { "grantTypes": { "maxItems": 4, "minItems": 1, "type": "array", "items": { "$ref": "#/components/schemas/SecurityInfo.OAuth2Info.GrantType" }, "description": "List of supported OAuth 2.0 grant types." }, "tokenEndpoint": { "type": "string", "description": "The token endpoint", "examples": ["/mecSerMgmtApi/security/TokenEndPoint"] } }, "description": "Parameters related to use of OAuth 2.0" }, "SecurityInfo.OAuth2Info.GrantType": { "title": "SecurityInfo.OAuth2Info.GrantType", "enum": [ "OAUTH2_AUTHORIZATION_CODE", "OAUTH2_IMPLICIT_GRANT", "OAUTH2_RESOURCE_OWNER", "OAUTH2_CLIENT_CREDENTIALS" ], "type": "string", "description": "OAuth 2.0 grant type", "examples": ["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", "examples": ["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", "examples": ["appName"] }, "endPt": { "description": "The version of the feature.", "oneOf": [ { "$ref": "#/components/schemas/EndPointInfo.Uris" }, { "$ref": "#/components/schemas/EndPointInfo.Fqdn" }, { "$ref": "#/components/schemas/EndPointInfo.Addresses" }, { "$ref": "#/components/schemas/EndPointInfo.Alternative" } ] }, "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.", "examples": ["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.", "contentEncoding": "int32", "examples": [1577836800] }, "status": { "type": "string", "description": "EAS status information. " } } } }, "requestBodies": { "AppTerminationNotification": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationNotification" } } }, "required": true } } } }