{ "openapi": "3.1.0", "info": { "title": "MEC Application Support API", "version": "2.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, V2.1.1", "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/02.01.01_60/gs_MEC011v020101p.pdf" }, "tags": [ { "name": "appTrafficRules" }, { "name": "appDnsRules" }, { "name": "appSubscriptions" }, { "name": "appConfirmTermination" }, { "name": "appConfirmReady" }, { "name": "timing" }, { "name": "callbacks" } ], "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema", "servers": [ { "url": "http://127.0.0.1:8081/mec_app_support/v1", "variables": {} }, { "url": "https://127.0.0.1:8081/mec_app_support/v1", "variables": {} } ], "paths": { "/applications/{appInstanceId}/traffic_rules": { "get": { "tags": [ "appTrafficRules" ], "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": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "headers": {}, "content": { "application/json": { "schema": { "minItems": 0, "type": "array", "items": { "$ref": "#/components/schemas/TrafficRule" }, "description": "", "examples": [ [ { "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": { "interfaceType": "IP", "dstIpAddress": "20.1.1.1" }, "state": "ACTIVE" } ] ], "contentMediaType": "application/json" }, "examples": { "TrafficRules": { "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" ], "dstPort": [ "80" ] } ], "action": "FORWARD_DECAPSULATED", "dstInterface": { "interfaceType": "IP", "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 }, "parameters": [] }, "/applications/{appInstanceId}/traffic_rules/{trafficRuleId}": { "get": { "tags": [ "appTrafficRules" ], "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": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrafficRule" }, "examples": { "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" ], "dstPort": [ "80" ] } ], "action": "FORWARD_DECAPSULATED", "dstInterface": { "interfaceType": "IP", "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" ], "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", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrafficRule" } } }, "required": true }, "responses": { "200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "headers": {}, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrafficRule" }, "examples": { "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" ], "dstPort": [ "80" ] } ], "action": "FORWARD_DECAPSULATED", "dstInterface": { "interfaceType": "IP", "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" ], "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": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "headers": {}, "content": { "application/json": { "schema": { "minItems": 0, "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" ], "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": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "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" ], "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 entity body of the request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DnsRule" } } }, "required": true }, "responses": { "200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "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" ], "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", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Upon success, a response body 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" ], "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": [ { "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": "Entity body 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" ], "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" ], "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", "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 body 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" ], "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" ], "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": "", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationConfirmation" } } }, "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": [] }, "/applications/{appInstanceId}/confirm_ready": { "post": { "tags": [ "appConfirmReady" ], "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": "", "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": [] }, "/timing/timing_caps": { "get": { "tags": [ "timing" ], "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.", "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" ], "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.", "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." }, "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." }, "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", "rel" ], "type": "object", "properties": { "href": { "type": "string", "description": "URI referring to a resource", "examples": [ "/mecAppSuptApi/example" ] }, "rel": { "type": "string", "description": "The values shall be set to AppTerminationNotificationSubscription." } }, "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", "authenticationKeyNum" ], "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...17", "contentEncoding": "int32", "examples": [ 3 ] }, "maxPollingInterval": { "type": "integer", "description": "Maximum poll interval for NTP messages, in seconds as a power of two. Range 3...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", "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 Master IP Address", "examples": [ "192.0.2.0" ] }, "ptpMasterLocalPriority": { "type": "integer", "description": "PTP Master 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": "Available PTP Masters" } }, "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" }, "token": { "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. If traffic rule conflicts, the one with higher priority take precedence", "contentEncoding": "int32", "examples": [ 1 ] }, "trafficFilter": { "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter" }, "description": "" }, "action": { "$ref": "#/components/schemas/TrafficRule.Action" }, "dstInterface": { "$ref": "#/components/schemas/DestinationInterface" }, "state": { "$ref": "#/components/schemas/TrafficRule.State" } }, "description": "This type represents the general information of a traffic rule." }, "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": [ "?" ] }, "tunnelSrcAddress": { "type": "string", "description": "Source address of the tunnel", "examples": [ "?" ] } }, "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" ] } }, "requestBodies": { "AppTerminationNotification": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationNotification" } } }, "required": true } } }, "security": [ {} ] }