MecAppSupportApi.json 55.2 KB
Newer Older
            }
          },
          "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 ME host data plane when a packet matches the trafficFilter",
        "type": "string",
        "enum": [
          "DROP",
          "FORWARD_DECAPSULATED",
          "FORWARD_AS_IS",
          "PASSTHROUGH",
          "DUPLICATE_DECAPSULATED",
          "DUPLICATE_AS_IS"
        ],
        "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",
        "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"
            "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.",
      },
      "Path.DnsRuleId": {
        "name": "dnsRuleId",
        "description": "Represents a DNS rule.",
        "in": "path",
        "required": true,
        "schema": {
        "description": "Represents a subscription to the notifications from the MEC platform.",
      },
      "Path.TrafficRuleId": {
        "name": "trafficRuleId",
        "description": "Represents a traffic rule.",
        "in": "path",
        "required": true,
        "schema": {
    "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"
          "getIndividualmecAppSuptApiSubscriptionLinkList": {
            "$ref": "#/components/links/GetIndividualmecAppSuptApiSubscriptionLinkList"
          "delIndividualmecAppSuptApiSubscriptionLinkList": {
            "$ref": "#/components/links/DelIndividualmecAppSuptApiSubscriptionLinkList"
        "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"
            }
          }
              "$ref": "#/components/schemas/AppTerminationNotificationSubscription"
          "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"
            }
        "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"
            }
          },
        "description": "Forbidden. The operation is not allowed given the current status of the resource. ",
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/ProblemDetails"
            }
        "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"
            }
          },
        "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"
            }
          },
        }
      }
    },
    "requestBodies": {
      "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"
            }
          }
        "{$request.body#/callbackReference}": {
            "description": "Represents the information that the MEP notifies the subscribed application instance about the corresponding  application instance termination/stop",
            "operationId": "AppTerminationNotification_POST",
            "tags": [
            "requestBody": {
              "$ref": "#/components/requestBodies/AppTerminationNotification"
            },
            "responses": {
              "200": {
                "description": "Expected responses from callback consumer, if it accepts the callback"
              }
            }
          }
        }
        "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}`",
          "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",
      "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}`",
          "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",
      "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}`",
          "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",
      "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}`",
          "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",
    "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"
          }
        ]