{ "openapi": "3.0.2", "servers": [ { "url": "http://127.0.0.1:8081/mec_app_support/v1" }, { "url": "https://127.0.0.1:8081/mec_app_support/v1" } ], "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" } ], "paths": { "/applications/{appInstanceId}/traffic_rules": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" } ], "get": { "description": "This method retrieves information about all the traffic rules associated with a MEC application instance.", "operationId": "ApplicationsTrafficRules_GET", "tags": [ "appTrafficRules" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsTrafficRules.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } } }, "/applications/{appInstanceId}/traffic_rules/{trafficRuleId}": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" }, { "$ref": "#/components/parameters/Path.TrafficRuleId" } ], "get": { "description": "This method retrieves information about all the traffic rules associated with a MEC application instance.", "operationId": "ApplicationsTrafficRule_GET", "tags": [ "appTrafficRules" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsTrafficRule.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } }, "put": { "description": "This method retrieves information about all the traffic rules associated with a MEC application instance.", "operationId": "ApplicationsTrafficRule_PUT", "tags": [ "appTrafficRules" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsTrafficRule.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" }, "412": { "$ref": "#/components/responses/Error.412" } }, "requestBody": { "$ref": "#/components/requestBodies/ApplicationsTrafficRule" } } }, "/applications/{appInstanceId}/dns_rules": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" } ], "get": { "description": "This method retrieves information about all the DNS rules associated with a MEC application instance.", "operationId": "ApplicationsDnsRules_GET", "tags": [ "appDnsRules" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsDnsRules.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } } }, "/applications/{appInstanceId}/dns_rules/{dnsRuleId}": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" }, { "$ref": "#/components/parameters/Path.DnsRuleId" } ], "get": { "description": "This method retrieves information about a DNS rule associated with a MEC application instance.", "operationId": "ApplicationsDnsRule_GET", "tags": [ "appDnsRules" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsDnsRule.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } }, "put": { "description": "This method activates, de-activates or updates a traffic rule.", "operationId": "ApplicationsDnsRule_PUT", "tags": [ "appDnsRules" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsDnsRule.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" }, "412": { "$ref": "#/components/responses/Error.412" } }, "requestBody": { "$ref": "#/components/requestBodies/ApplicationsDnsRule" } } }, "/applications/{appInstanceId}/subscriptions": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" } ], "get": { "description": "The GET method may be used to request information about all subscriptions for this requestor. Upon success, the response contains entity body with all the subscriptions for the requestor.", "operationId": "ApplicationsSubscriptions_GET", "tags": [ "appSubscriptions" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsSubscriptions.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } }, "post": { "description": "The POST method may be used to create a new subscription. One example use case is to create a new subscription to the MEC service availability notifications. Upon success, the response contains entity body describing the created subscription.", "operationId": "ApplicationsSubscriptions_POST", "tags": [ "appSubscriptions" ], "responses": { "201": { "$ref": "#/components/responses/ApplicationsSubscriptions.201" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } }, "requestBody": { "$ref": "#/components/requestBodies/ApplicationsSubscriptions" }, "callbacks": { "appTerminationNotification": { "$ref": "#/components/callbacks/AppTerminationNotification" } } } }, "/applications/{appInstanceId}/subscriptions/{subscriptionId}": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" }, { "$ref": "#/components/parameters/Path.SubscriptionId" } ], "get": { "description": "The GET method requests information about a subscription for this requestor. Upon success, the response contains entity body with the subscription for the requestor.", "operationId": "ApplicationsSubscription_GET", "tags": [ "appSubscriptions" ], "responses": { "200": { "$ref": "#/components/responses/ApplicationsSubscription.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } }, "delete": { "description": "This method deletes a mecAppSuptApiSubscription. This method is typically used in \"Unsubscribing from service availability event notifications\" procedure.", "operationId": "ApplicationsSubscription_DELETE", "tags": [ "appSubscriptions" ], "responses": { "204": { "description": "No Content" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } } }, "/applications/{appInstanceId}/confirm_termination": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" } ], "post": { "description": "This method is used to confirm the application level termination of an application instance.", "operationId": "ApplicationsConfirmTermination_POST", "tags": [ "appConfirmTermination" ], "responses": { "204": { "description": "No Content" }, "401": { "$ref": "#/components/responses/Error.401" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" }, "409": { "$ref": "#/components/responses/Error.409" }, "429": { "$ref": "#/components/responses/Error.429" } }, "requestBody": { "$ref": "#/components/requestBodies/ApplicationsConfirmTermination" } } }, "/applications/{appInstanceId}/confirm_ready": { "parameters": [ { "$ref": "#/components/parameters/Path.AppInstanceId" } ], "post": { "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", "tags": [ "appConfirmReady" ], "responses": { "204": { "description": "No Content" }, "401": { "$ref": "#/components/responses/Error.401" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" }, "409": { "$ref": "#/components/responses/Error.409" }, "429": { "$ref": "#/components/responses/Error.429" } }, "requestBody": { "$ref": "#/components/requestBodies/ApplicationsConfirmReady" } } }, "/timing/timing_caps": { "get": { "description": "This method retrieves the information of the platform's timing capabilities which corresponds to the timing capabilities query", "operationId": "TimingCaps_GET", "tags": [ "timing" ], "responses": { "200": { "$ref": "#/components/responses/TimingCaps.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } } }, "/timing/current_time": { "get": { "description": "This method retrieves the information of the platform's current time which corresponds to the get platform time procedure", "operationId": "TimingCurrentTime_GET", "tags": [ "timing" ], "responses": { "200": { "$ref": "#/components/responses/TimingCurrentTime.200" }, "400": { "$ref": "#/components/responses/Error.400" }, "403": { "$ref": "#/components/responses/Error.403" }, "404": { "$ref": "#/components/responses/Error.404" } } } } }, "components": { "schemas": { "Empty": { "description": "Empty schema" }, "AppReadyConfirmation": { "description": "This type represents the information that the MEC application instance indicates to the MEC platform that it is up and running.", "type": "object", "required": [ "indication" ], "properties": { "indication": { "$ref": "#/components/schemas/ReadyIndicationType" } } }, "AppTerminationConfirmation": { "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.", "type": "object", "required": [ "operationAction" ], "properties": { "operationAction": { "$ref": "#/components/schemas/OperationActionType" } } }, "AppTerminationNotification.Links": { "description": "Object containing hyperlinks related to the resource.", "type": "object", "required": [ "subscription" ], "properties": { "subscription": { "$ref": "#/components/schemas/LinkType" }, "confirmTermination": { "$ref": "#/components/schemas/LinkType.ConfirmTermination" } } }, "AppTerminationNotification.MaxGracefulTimeout": { "description": "Maximum timeout value in seconds for graceful termination or graceful stop of an application instance.", "type": "integer", "format": "uint32", "example": 10 }, "AppTerminationNotification.NotificationType": { "description": "Shall be set to AppTerminationNotification.", "type": "string", "example": "AppTerminationNotification" }, "AppTerminationNotification": { "description": "This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop.", "type": "object", "required": [ "notificationType", "operationAction", "maxGracefulTimeout", "_links" ], "properties": { "notificationType": { "$ref": "#/components/schemas/AppTerminationNotification.NotificationType" }, "operationAction": { "$ref": "#/components/schemas/OperationActionType" }, "maxGracefulTimeout": { "$ref": "#/components/schemas/AppTerminationNotification.MaxGracefulTimeout" }, "_links": { "$ref": "#/components/schemas/AppTerminationNotification.Links" } } }, "AppTerminationNotificationSubscription.AppInstanceId": { "description": "It is used as the filtering criterion for the subscribed events.", "type": "string", "example": "ID1" }, "AppTerminationNotificationSubscription.CallbackReference": { "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.", "type": "string", "format": "uri" }, "AppTerminationNotificationSubscription": { "description": "This type represents the information that the MEC platform notifies the subscribed application instance about the corresponding application instance termination/stop.", "type": "object", "required": [ "subscriptionType", "callbackReference", "_links", "appInstanceId" ], "properties": { "subscriptionType": { "$ref": "#/components/schemas/AppTerminationNotificationSubscription.SubscriptionType" }, "callbackReference": { "$ref": "#/components/schemas/AppTerminationNotificationSubscription.CallbackReference" }, "_links": { "$ref": "#/components/schemas/Self" }, "appInstanceId": { "$ref": "#/components/schemas/AppTerminationNotificationSubscription.AppInstanceId" } } }, "AppTerminationNotificationSubscription.SubscriptionType": { "description": "Shall be set to AppTerminationNotificationSubscription.", "type": "string", "example": "AppTerminationNotificationSubscription" }, "CurrentTime": { "description": "This type represents the information provided by the MEC platform in response to the Get Platform Time Request message.", "type": "object", "required": [ "nanoSeconds", "seconds", "timeSourceStatus" ], "properties": { "seconds": { "type": "integer", "format": "uint32", "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", "example": 1577836800 }, "nanoSeconds": { "type": "integer", "format": "uint32", "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", "example": 0 }, "timeSourceStatus": { "type": "string", "enum": [ "TRACEABLE", "NONTRACEABLE" ], "description": "Platform Time Source status. 1 = TRACEABLE - time source is locked to the UTC time source. 2 = NONTRACEABLE - time source is not locked to the UTC time source", "example": "TRACEABLE" } } }, "DestinationInterface.InterfaceType": { "description": "Type of the interface", "type": "string", "enum": [ "TUNNEL", "MAC", "IP" ], "example": "TUNNEL" }, "DestinationInterface.IpAddress": { "description": "IP address of the remote destination", "type": "string", "example": "192.0.2.0" }, "DestinationInterface.MacAddress": { "description": "Source address identifies the MAC address of the interface", "type": "string", "example": "02-00-00-00-00-00" }, "DestinationInterface": { "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.", "type": "object", "required": [ "interfaceType" ], "properties": { "interfaceType": { "$ref": "#/components/schemas/DestinationInterface.InterfaceType" }, "tunnelInfo": { "$ref": "#/components/schemas/TunnelInfo" }, "srcMacAddress": { "$ref": "#/components/schemas/DestinationInterface.MacAddress" }, "dstMacAddress": { "$ref": "#/components/schemas/DestinationInterface.MacAddress" }, "dstIpAddress": { "$ref": "#/components/schemas/DestinationInterface.IpAddress" } } }, "DnsRule.DomainName": { "description": "FQDN resolved by the DNS rule", "type": "string", "example": "www.example.com" }, "DnsRule.Id": { "description": "Identifies the DNS Rule", "type": "string", "example": "dnsRule1" }, "DnsRule.IpAddress": { "description": "IP address associated with the FQDN resolved by the DNS rule", "type": "string", "example": "192.0.2.0" }, "DnsRule.IpAddressType": { "description": "IP address type", "type": "string", "enum": [ "IP_V6", "IP_V4" ], "example": "IP_V6" }, "DnsRule.State": { "description": "DNS rule state. This attribute may be updated using HTTP PUT method", "type": "string", "enum": [ "ACTIVE", "INACTIVE" ], "example": "ACTIVE" }, "DnsRule.Ttl": { "description": "Time to live value", "type": "integer", "format": "uint32", "example": "?" }, "DnsRule": { "description": "This type represents the general information of a DNS rule.", "type": "object", "required": [ "dnsRuleId", "domainName", "ipAddressType", "ipAddress", "state" ], "properties": { "dnsRuleId": { "$ref": "#/components/schemas/DnsRule.Id" }, "domainName": { "$ref": "#/components/schemas/DnsRule.DomainName" }, "ipAddressType": { "$ref": "#/components/schemas/DnsRule.IpAddressType" }, "ipAddress": { "$ref": "#/components/schemas/DnsRule.IpAddress" }, "ttl": { "$ref": "#/components/schemas/DnsRule.Ttl" }, "state": { "$ref": "#/components/schemas/DnsRule.State" } } }, "LinkType": { "description": "This type represents a type of link and may be referenced from data structures", "type": "object", "properties": { "href": { "$ref": "#/components/schemas/Href" } } }, "LinkType.ConfirmTermination": { "description": "Link to the task resource where to confirm termination in case the application is ready to be terminated before expiry of the timeout.", "type": "object", "properties": { "href": { "$ref": "#/components/schemas/Href" } } }, "Href": { "description": "URI referring to a resource", "type": "string", "format": "uri", "example": "/mecAppSuptApi/example" }, "MecAppSuptApiSubscriptionLinkList.Links": { "description": "Self-referring URI.", "type": "object", "required": [ "self" ], "properties": { "self": { "$ref": "#/components/schemas/LinkType" }, "subscriptions": { "description": "The MEC application instance's subscriptions", "type": "array", "items": { "$ref": "#/components/schemas/MecAppSuptApiSubscriptionLinkList.Subscription" } } } }, "MecAppSuptApiSubscriptionLinkList.Subscription": { "description": "A link to a subscription.", "type": "object", "required": [ "href", "rel" ], "properties": { "href": { "$ref": "#/components/schemas/Href" }, "rel": { "description": "The values shall be set to AppTerminationNotificationSubscription.", "type": "string" } } }, "MecAppSuptApiSubscriptionLinkList": { "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.", "type": "object", "required": [ "_links" ], "properties": { "_links": { "$ref": "#/components/schemas/MecAppSuptApiSubscriptionLinkList.Links" } } }, "OperationActionType": { "description": "Operation that is being performed on the MEC application instance.", "type": "string", "enum": [ "STOPPING", "TERMINATING" ], "example": "TERMINATING" }, "ProblemDetails": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/Problem.type" }, "title": { "$ref": "#/components/schemas/Problem.title" }, "status": { "$ref": "#/components/schemas/Problem.status" }, "detail": { "$ref": "#/components/schemas/Problem.detail" }, "instance": { "$ref": "#/components/schemas/Problem.instance" } } }, "Problem.detail": { "type": "string", "description": "A human-readable explanation specific to this occurrence of the problem" }, "Problem.instance": { "type": "string", "format": "uri", "description": "A URI reference that identifies the specific occurrence of the problem" }, "Problem.status": { "type": "integer", "format": "uint32", "description": "The HTTP status code for this occurrence of the problem" }, "Problem.title": { "type": "string", "description": "A short, human-readable summary of the problem type" }, "Problem.type": { "type": "string", "format": "uri", "description": "A URI reference according to IETF RFC 3986 that identifies the problem type" }, "ReadyIndicationType": { "description": "Indication about the MEC application instance.", "type": "string", "enum": [ "READY" ], "example": "READY" }, "Self": { "description": "Self-referring URI.", "type": "object", "required": [ "self" ], "properties": { "self": { "$ref": "#/components/schemas/LinkType" } }, "readOnly": true }, "TimingCaps.NtpServers.AuthenticationKeyNum": { "description": "Authentication key number", "type": "integer", "format": "uint32", "example": 1 }, "TimingCaps.NtpServers.AuthenticationOption": { "description": "NTP authentication option", "type": "string", "enum": [ "NONE", "SYMMETRIC_KEY", "AUTO_KEY" ], "example": "NONE" }, "TimingCaps.NtpServers.DelayReqMaxRate": { "description": "Acceptable maximum rate of the Delay_Req messages in packets per second", "type": "integer", "format": "uint32", "example": 10 }, "TimingCaps.NtpServers.LocalPriority": { "description": "NTP server local priority", "type": "integer", "format": "uint32", "example": 1 }, "TimingCaps.NtpServers.MaxPollingInterval": { "description": "Maximum poll interval for NTP messages, in seconds as a power of two. Range 3...17", "type": "integer", "format": "uint32", "example": 17 }, "TimingCaps.NtpServers.MinPollingInterval": { "description": "Minimum poll interval for NTP messages, in seconds as a power of two. Range 3...17", "type": "integer", "format": "uint32", "example": 3 }, "TimingCaps.NtpServers.NtpServerAddr": { "description": "NTP server address", "type": "string", "example": "192.0.2.0" }, "TimingCaps.NtpServers.NtpServerAddrType": { "description": "Address type of NTP server", "type": "string", "enum": [ "IP_ADDRESS", "DNS_NAME" ], "example": "IP_ADDRESS" }, "TimingCaps.NtpServers_PtpMasterIpAddress": { "description": "PTP Master IP Address", "type": "string", "example": "192.0.2.0" }, "TimingCaps.NtpServers_PtpMasterLocalPriority": { "description": "PTP Master local priority", "type": "integer", "format": "uint32", "example": 1 }, "TimingCaps.NtpServers": { "description": "NTP server detail.", "type": "object", "required": [ "ntpServerAddrType", "ntpServerAddr", "minPollingInterval", "maxPollingInterval", "localPriority", "authenticationOption", "authenticationKeyNum" ], "properties": { "ntpServerAddrType": { "$ref": "#/components/schemas/TimingCaps.NtpServers.NtpServerAddrType" }, "ntpServerAddr": { "$ref": "#/components/schemas/TimingCaps.NtpServers.NtpServerAddr" }, "minPollingInterval": { "$ref": "#/components/schemas/TimingCaps.NtpServers.MinPollingInterval" }, "maxPollingInterval": { "$ref": "#/components/schemas/TimingCaps.NtpServers.MaxPollingInterval" }, "localPriority": { "$ref": "#/components/schemas/TimingCaps.NtpServers.LocalPriority" }, "authenticationOption": { "$ref": "#/components/schemas/TimingCaps.NtpServers.AuthenticationOption" }, "authenticationKeyNum": { "$ref": "#/components/schemas/TimingCaps.NtpServers.AuthenticationKeyNum" } } }, "TimingCaps_PtpMasters": { "description": "NTP server detail.", "type": "object", "required": [ "ptpMasterIpAddress", "ptpMasterLocalPriority", "delayReqMaxRate" ], "properties": { "ptpMasterIpAddress": { "$ref": "#/components/schemas/TimingCaps.NtpServers_PtpMasterIpAddress" }, "ptpMasterLocalPriority": { "$ref": "#/components/schemas/TimingCaps.NtpServers_PtpMasterLocalPriority" }, "delayReqMaxRate": { "$ref": "#/components/schemas/TimingCaps.NtpServers.DelayReqMaxRate" } } }, "TimingCaps.TimeStamp": { "description": "time", "type": "object", "required": [ "nanoSeconds", "seconds" ], "properties": { "seconds": { "type": "integer", "format": "uint32", "description": "The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", "example": 1577836800 }, "nanoSeconds": { "type": "integer", "format": "uint32", "description": "The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC", "example": 0 } } }, "TimingCaps": { "description": "This type represents the information provided by the MEC platform in response to the Timing capabilities Query message.", "type": "object", "properties": { "timeStamp": { "$ref": "#/components/schemas/TimingCaps.TimeStamp" }, "ntpServers": { "description": "Available NTP servers", "type": "array", "items": { "$ref": "#/components/schemas/TimingCaps.NtpServers" } }, "ptpMasters": { "description": "Available PTP Masters", "type": "array", "items": { "$ref": "#/components/schemas/TimingCaps_PtpMasters" } } } }, "TrafficFilter.Address": { "description": "Identify the traffic ip address.", "type": "string", "example": "192.168.1.1" }, "TrafficFilter.DSCP": { "description": "Used to match all IPv4 packets that have the same Differentiated Services Code Point (DSCP)", "type": "integer", "format": "uint32", "example": 0 }, "TrafficFilter.Port": { "description": "A port", "type": "string", "example": "8080" }, "TrafficFilter.Protocol": { "description": "Protocol of the traffic filter", "type": "string", "example": "?" }, "TrafficFilter.QCI": { "description": "Used to match all packets that have the same Quality Class Indicator (QCI).", "type": "integer", "format": "uint32", "example": 1 }, "TrafficFilter.TC": { "description": "Used to match all IPv6 packets that have the same Traffic Class.", "type": "integer", "format": "uint32", "example": 1 }, "TrafficFilter.Token": { "description": "Used for token based traffic rule", "type": "string", "example": "?" }, "TrafficFilter.TunnelAddress": { "description": "Used for GTP tunnel based traffic rule", "type": "string", "example": "?" }, "TrafficFilter.TunnelPort": { "description": "Used for GTP tunnel based traffic rule", "type": "string", "example": "?" }, "TrafficFilter": { "description": "This type represents the traffic filter.", "type": "object", "properties": { "srcAddress": { "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.", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.Address" } }, "dstAddress": { "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.", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.Address" } }, "srcPort": { "description": "A port or a range of ports", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.Port" } }, "dstPort": { "description": "A port or a range of ports", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.Port" } }, "protocol": { "description": "Specify the protocol of the traffic filter", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.Protocol" } }, "token": { "description": "Used for token based traffic rule", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.Token" } }, "srcTunnelAddress": { "description": "Used for GTP tunnel based traffic rule", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.TunnelAddress" } }, "tgtTunnelAddress": { "description": "Used for GTP tunnel based traffic rule", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.TunnelAddress" } }, "srcTunnelPort": { "description": "Used for GTP tunnel based traffic rule", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.TunnelPort" } }, "dstTunnelPort": { "description": "Used for GTP tunnel based traffic rule", "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter.TunnelPort" } }, "qCI": { "$ref": "#/components/schemas/TrafficFilter.QCI" }, "dSCP": { "$ref": "#/components/schemas/TrafficFilter.DSCP" }, "tC": { "$ref": "#/components/schemas/TrafficFilter.TC" } } }, "TrafficRule.Action": { "description": "The action of the MEC host data plane when a packet matches the trafficFilter\n ", "type": "string", "enum": [ "DROP", "FORWARD_DECAPSULATED", "FORWARD_ENCAPSULATED", "PASSTHROUGH", "DUPLICATE_DECAPSULATED", "DUPLICATE_ENCAPSULATED" ], "example": "DROP" }, "TrafficRule.FilterType": { "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", "type": "string", "enum": [ "FLOW", "PACKET" ], "example": "FLOW" }, "TrafficRule.Id": { "description": "Identify the traffic rule.", "type": "string", "example": "TrafficRule1" }, "TrafficRule_Priority": { "description": "Priority of this traffic rule. If traffic rule conflicts, the one with higher priority take precedence", "type": "integer", "format": "uint32", "example": 1 }, "TrafficRule.State": { "description": "Contains the traffic rule state. This attribute may be updated using HTTP PUT method", "type": "string", "enum": [ "ACTIVE", "INACTIVE" ], "example": "ACTIVE" }, "TrafficRule": { "description": "This type represents the general information of a traffic rule.", "type": "object", "required": [ "trafficRuleId", "filterType", "priority", "trafficFilter", "action", "state" ], "properties": { "trafficRuleId": { "$ref": "#/components/schemas/TrafficRule.Id" }, "filterType": { "$ref": "#/components/schemas/TrafficRule.FilterType" }, "priority": { "$ref": "#/components/schemas/TrafficRule_Priority" }, "trafficFilter": { "type": "array", "items": { "$ref": "#/components/schemas/TrafficFilter" } }, "action": { "$ref": "#/components/schemas/TrafficRule.Action" }, "dstInterface": { "$ref": "#/components/schemas/DestinationInterface" }, "state": { "$ref": "#/components/schemas/TrafficRule.State" } } }, "TunnelInfo.TunnelDstAddress": { "description": "Destination address of the tunnel", "type": "string", "example": "?" }, "TunnelInfo.TunnelSrcAddress": { "description": "Source address of the tunnel", "type": "string", "example": "?" }, "TunnelInfo.TunnelType": { "description": "This type represents the tunnel information.", "type": "string", "enum": [ "GTP_U", "GRE" ], "example": "GTP_U" }, "TunnelInfo": { "description": "This type represents the tunnel information.", "type": "object", "required": [ "tunnelType" ], "properties": { "tunnelType": { "$ref": "#/components/schemas/TunnelInfo.TunnelType" }, "tunnelDstAddress": { "$ref": "#/components/schemas/TunnelInfo.TunnelDstAddress" }, "tunnelSrcAddress": { "$ref": "#/components/schemas/TunnelInfo.TunnelSrcAddress" } } } }, "parameters": { "Path.AppInstanceId": { "name": "appInstanceId", "description": "Represents a MEC application instance. Note that the appInstanceId is allocated by the MEC platform manager.", "in": "path", "required": true, "schema": { "type": "string" } }, "Path.DnsRuleId": { "name": "dnsRuleId", "description": "Represents a DNS rule.", "in": "path", "required": true, "schema": { "type": "string" } }, "Path.SubscriptionId": { "name": "subscriptionId", "description": "Represents a subscription to the notifications from the MEC platform.", "in": "path", "required": true, "schema": { "type": "string" } }, "Path.TrafficRuleId": { "name": "trafficRuleId", "description": "Represents a traffic rule.", "in": "path", "required": true, "schema": { "type": "string" } } }, "responses": { "ApplicationsDnsRules.200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "content": { "application/json": { "schema": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/DnsRule" } }, "examples": { "DnsRules": { "$ref": "#/components/examples/DnsRules" } } } }, "links": { "getIndividualMeDNSRule": { "$ref": "#/components/links/GetIndividualMeDNSRule" }, "putIndividualMeDNSRule": { "$ref": "#/components/links/PutIndividualMeDNSRule" } } }, "ApplicationsDnsRule.200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DnsRule" }, "examples": { "DnsRule": { "$ref": "#/components/examples/DnsRule" } } } } }, "ApplicationsSubscriptions.200": { "description": "Upon success, a response body containing the list of links to the requested subscriptions is returned.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MecAppSuptApiSubscriptionLinkList" } } }, "links": { "getIndividualmecAppSuptApiSubscriptionLinkList": { "$ref": "#/components/links/GetIndividualmecAppSuptApiSubscriptionLinkList" }, "delIndividualmecAppSuptApiSubscriptionLinkList": { "$ref": "#/components/links/DelIndividualmecAppSuptApiSubscriptionLinkList" } } }, "ApplicationsSubscriptions.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", "schema": { "type": "string", "format": "uri" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationNotificationSubscription" } } }, "links": { "getIndividualmecAppSuptApiSubscription": { "$ref": "#/components/links/GetIndividualmecAppSuptApiSubscription" }, "delIndividualmecAppSuptApiSubscription": { "$ref": "#/components/links/DelIndividualmecAppSuptApiSubscription" } } }, "ApplicationsSubscription.200": { "description": "Upon success, a response body containing the requested subscription is returned.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationNotificationSubscription" } } } }, "ApplicationsTrafficRules.200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "content": { "application/json": { "schema": { "type": "array", "minItems": 0, "items": { "$ref": "#/components/schemas/TrafficRule" } }, "examples": { "TrafficRules": { "$ref": "#/components/examples/TrafficRules" } } } }, "links": { "getIndividualMeTrafficRule": { "$ref": "#/components/links/GetIndividualMeTrafficRule" }, "putIndividualMeTrafficRule": { "$ref": "#/components/links/PutIndividualMeTrafficRule" } } }, "ApplicationsTrafficRule.200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrafficRule" }, "examples": { "TrafficRule": { "$ref": "#/components/examples/TrafficRule" } } } } }, "TimingCurrentTime.200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CurrentTime" } } } }, "TimingCaps.200": { "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TimingCaps" } } } }, "Error.400": { "description": "Bad Request. It is used to indicate that incorrect parameters were passed to the request.", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "$ref": "#/components/schemas/Empty" } } } }, "Error.401": { "description": "Unauthorized. It is used when the client did not submit the appropriate credentials.", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "$ref": "#/components/schemas/Empty" } } } }, "Error.403": { "description": "Forbidden. The operation is not allowed given the current status of the resource. ", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } } } }, "Error.404": { "description": "Not Found. It is used when a client provided a URI that cannot be mapped to a valid resource URI.", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "$ref": "#/components/schemas/Empty" } } } }, "Error.409": { "description": "Conflict. The operation cannot be executed currently, due to a conflict with the state of the resource. Typically, this is because the application instance resource is in NOT_INSTANTIATED state.", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "$ref": "#/components/schemas/Empty" } } } }, "Error.412": { "description": "Precondition Failed. It is used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts.", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "$ref": "#/components/schemas/Empty" } } } }, "Error.429": { "description": "Too Many Requests. It is used when a rate limiter has triggered.", "content": { "application/problem+json": { "schema": { "$ref": "#/components/schemas/ProblemDetails" } }, "text/plain": { "schema": { "$ref": "#/components/schemas/Empty" } } } } }, "requestBodies": { "ApplicationsConfirmReady": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppReadyConfirmation" } } } }, "ApplicationsConfirmTermination": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationConfirmation" } } } }, "ApplicationsDnsRule": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DnsRule" } } }, "description": "The updated state is included in the entity body of the request.", "required": true }, "ApplicationsSubscriptions": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationNotificationSubscription" } } }, "description": "Entity body in the request contains a subscription to the MEC application termination notifications that is to be created.", "required": true }, "ApplicationsTrafficRule": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrafficRule" } } }, "description": "One or more updated attributes that are allowed to be changed", "required": true }, "AppTerminationNotification": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTerminationNotification" } } }, "required": true } }, "callbacks": { "AppTerminationNotification": { "{$request.body#/callbackReference}": { "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" } } } } } }, "links": { "GetIndividualMeDNSRule": { "operationId": "ApplicationsDnsRule_GET", "description": "The `dnsRuleId` value returned in the response can be used as the `dnsRuleId` parameter in `GET /applications/{appInstanceId}/dns_rules/{dnsRuleId}`", "parameters": { "dnsRuleId": "$response.body#/dnsRuleId" } }, "PutIndividualMeDNSRule": { "operationId": "ApplicationsDnsRule_PUT", "description": "The `dnsRuleId` value returned in the response can be used as the `dnsRuleId` parameter in `PUT /applications/{appInstanceId}/dns_rules/{dnsRuleId}`", "parameters": { "dnsRuleId": "$response.body#/dnsRuleId" } }, "GetIndividualMeTrafficRule": { "operationId": "ApplicationsTrafficRule_GET", "description": "The `trafficRuleId` value returned in the response can be used as the `trafficRuleId` parameter in `GET /applications/{appInstanceId}/traffic_rules/{trafficRuleId}`", "parameters": { "trafficRuleId": "$response.body#/trafficRuleId" } }, "PutIndividualMeTrafficRule": { "operationId": "ApplicationsTrafficRule_PUT", "description": "The `trafficRuleId` value returned in the response can be used as the `trafficRuleId` parameter in `PUT /applications/{appInstanceId}/traffic_rules/{trafficRuleId}`", "parameters": { "trafficRuleId": "$response.body#/trafficRuleId" } }, "GetIndividualmecAppSuptApiSubscription": { "operationId": "ApplicationsSubscription_GET", "description": "The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}`", "parameters": { "description": "regex = \\/mec_app_support\\/v1\\/applications\\/.*\\/subscriptions\\/.*\\/(.*);subscriptionId = href.match(regex)[1];// where \"href\" is an attribute within the subscription attribute within the _links attribute", "subscriptionId": "TBC" } }, "DelIndividualmecAppSuptApiSubscription": { "operationId": "ApplicationsSubscription_DELETE", "description": "The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}`", "parameters": { "description": "regex = \\/mec_app_support\\/v1\\/applications\\/.*\\/subscriptions\\/(.*);subscriptionId = href.match(regex)[1];// where \"href\" is an attribute within the subscription attribute within the _links attribute", "subscriptionId": "TBC" } }, "GetIndividualmecAppSuptApiSubscriptionLinkList": { "operationId": "ApplicationsSubscription_GET", "description": "The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `GET /applications/{appInstanceId}/subscriptions/{subscriptionId}`", "parameters": { "description": "regex = \\/mec_app_support\\/v1\\/applications\\/.*\\/subscriptions\\/(.*);subscriptionId = href.match(regex)[1];// where \"href\" is an attribute within the subscription attribute within the _links attribute", "subscriptionId": "TBC" } }, "DelIndividualmecAppSuptApiSubscriptionLinkList": { "operationId": "ApplicationsSubscription_DELETE", "description": "The `subscriptionId` value returned in the response can be used as the `subscriptionId` parameter in `DELETE /applications/{appInstanceId}/subscriptions/{subscriptionId}`", "parameters": { "description": "regex = \\/mec_app_support\\/v1\\/applications\\/.*\\/subscriptions\\/(.*);subscriptionId = href.match(regex)[1];// where \"href\" is an attribute within the subscription attribute within the _links attribute", "subscriptionId": "TBC" } } }, "examples": { "DnsRule": { "value": { "dnsRuleId": "DnsRule1", "domainName": "www.example.com", "ipAddressType": "IP_V4", "ipAddress": "146.241.7.3", "ttl": 300, "state": "ACTIVE" } }, "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" } ] }, "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" } }, "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" } ] } } } }