Mp1.json 92.5 KB
Newer Older
{
  "swagger": "2.0",
  "info": {
    "title": "Mp1 API",
    "description": "The ETSI MEC ISG MEC011 Application Enablement API described using OpenAPI",
    "license": {
      "name": "ETSI Forge copyright notice",
      "url": "https://forge.etsi.org/etsi-forge-copyright-notice.txt"
    }
  },
  "externalDocs": {
    "description": "ETSI GS MEC011 Application Enablement API, V2.0.5",
    "url": "https://docbox.etsi.org/ISG/MEC/70-Draft/0011v211Plat.App.Enabl/MEC-0011v211Plat.App.Enablv205.zip"
  },
  "host": "127.0.0.1:8081",
  "schemes": [
    "http",
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "parameters": {
    "Body.AppTerminationNotificationSubscription": {
      "name": "AppTerminationNotificationSubscription",
      "description": "Entity body in the request contains a subscription to the MEC application termination notifications that is to be created.",
      "in": "body",
      "required": true,
      "schema": {
        "type": "object",
        "properties": {
          "AppTerminationNotificationSubscription": {
            "$ref": "#/definitions/AppTerminationNotificationSubscription"
          }
        }
      }
    },
    "Body.DnsRule": {
      "name": "DnsRule",
      "description": "The updated state is included in the entity body of the request.",
      "in": "body",
      "required": true,
      "schema": {
        "type": "object",
        "properties": {
          "DnsRule": {
            "$ref": "#/definitions/DnsRule"
          }
        }
      }
    },
    "Body.SerAvailabilityNotificationSubscription": {
      "name": "SerAvailabilityNotificationSubscription",
      "description": "Entity body in the request contains a subscription to the MEC service availability notifications that is to be created.",
      "in": "body",
      "required": true,
      "schema": {
        "type": "object",
        "properties": {
          "SerAvailabilityNotificationSubscription": {
            "$ref": "#/definitions/SerAvailabilityNotificationSubscription"
          }
        }
      }
    },
    "Body.ServiceInfo": {
      "name": "ServiceInfo",
      "description": "New ServiceInfo with updated \"state\" is included as entity body of the request",
      "in": "body",
      "required": true,
      "schema": {
        "type": "object",
        "properties": {
          "ServiceInfo": {
            "$ref": "#/definitions/ServiceInfo"
          }
        }
      }
    },
    "Body.TrafficRule": {
      "name": "TrafficRule",
      "description": "One or more updated attributes that are allowed to be changed",
      "in": "body",
      "required": true,
      "schema": {
        "type": "object",
        "properties": {
          "TrafficRule": {
            "$ref": "#/definitions/TrafficRule"
          }
        }
      }
    },
    "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,
      "type": "string",
      "format": "uri"
    },
    "Path.DnsRuleId": {
      "name": "dnsRuleId",
      "description": "Represents a DNS rule.",
      "in": "path",
      "required": true,
      "type": "string",
      "format": "uri"
    },
    "Path.SubscriptionId": {
      "name": "subscriptionId",
      "description": "Represents a subscription to the notifications from the MEC platform.",
      "in": "path",
      "required": true,
      "type": "string",
      "format": "uri"
    },
    "Path.ServiceId": {
      "name": "serviceId",
      "description": "Represents a MEC service instance.",
      "in": "path",
      "required": true,
      "type": "string",
      "format": "uri"
    },
    "Path.TrafficRuleId": {
      "name": "trafficRuleId",
      "description": "Represents a traffic rule.",
      "in": "path",
      "required": true,
      "type": "string",
      "format": "uri"
    },
    "Query.Ser_category_id": {
      "name": "ser_category_id",
      "description": "A MEC application instance may use ser_category_id as an input parameter to query the availability of a list of MEC service instances in a serCategory. Either \"ser_instance_id\" or \"ser_name\" or \"ser_category_id\" or none of them shall be present.",
      "in": "query",
      "required": false,
      "type": "string"
    },
    "Query.Ser_instance_id": {
      "name": "ser_instance_id",
      "description": "A MEC application instance may use multiple ser_instance_ids as an input parameter to query the availability of a list of MEC service instances. Either \"ser_instance_id\" or \"ser_name\" or \"ser_category_id\" or none of them shall be present.",
      "in": "query",
      "required": false,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "Query.Ser_name": {
      "name": "ser_name",
      "description": "A MEC application instance may use multiple ser_names as an input parameter to query the availability of a list of MEC service instances. Either \"ser_instance_id\" or \"ser_name\" or \"ser_category_id\" or none of them shall be present.",
      "in": "query",
      "required": false,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "Query.Locality_types": {
      "name": "locality_types",
      "in": "query",
      "description": "A MEC application instance may use scope_of_locality as an input parameter to query the availability of a list of MEC service instances with a certain scope of locality",
      "required": false,
      "type": "string"
    },
    "Query.Is_local": {
      "name": "is_local",
      "in": "query",
      "description": "Indicate whether the service is located in the same locality (as defined by scopeOfLocality) as the consuming MEC application",
      "required": false,
      "type": "boolean"
    },
    "Query.Consumed_LocalOnly": {
      "name": "consumed_localonly",
      "in": "query",
      "description": "Indicate whether the service can only be consumed by the MEC applications located in the same locality (as defined by scopeOfLocality) as this service instance",
      "required": false,
      "type": "boolean"
    }
  },
  "paths": {
    "/applications/{appInstanceId}/dns_rules": {
      "parameters": [
        {
          "$ref": "#/parameters/Path.AppInstanceId"
        }
      ],
      "get": {
        "description": "This method retrieves information about all the DNS rules associated with a MEC application instance.",
        "operationId": "ApplicationsDnsRules.GET",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.",
            "schema": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "DnsRule": {
                    "$ref": "#/definitions/DnsRule"
                  }
                }
              }
            },
            "examples": {
              "application/json": [
                {
                  "DnsRule": {
                    "dnsRuleId": "DnsRule1",
                    "domainName": "www.example.com",
                    "ipAddressType": "IP_V4",
                    "ipAddress": "146.241.7.3",
                    "ttl": 300,
                    "state": "ACTIVE"
                  }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/applications/{appInstanceId}/dns_rules/{dnsRuleId}": {
      "parameters": [
        {
          "$ref": "#/parameters/Path.AppInstanceId"
        },
        {
          "$ref": "#/parameters/Path.DnsRuleId"
        }
      ],
      "get": {
        "description": "This method retrieves information about a DNS rule associated with a MEC application instance.",
        "operationId": "ApplicationsDnsRule.GET",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.",
            "schema": {
              "type": "object",
              "properties": {
                "DnsRule": {
                  "$ref": "#/definitions/DnsRule"
                }
              }
            },
            "examples": {
              "application/json": {
                "DnsRule": {
                  "dnsRuleId": "DnsRule1",
                  "domainName": "www.example.com",
                  "ipAddressType": "IP_V4",
                  "ipAddress": "146.241.7.3",
                  "ttl": 300,
                  "state": "ACTIVE"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "description": "This method activates, de-activates or updates a traffic rule.",
        "operationId": "ApplicationsDnsRule.PUT",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Body.DnsRule"
          }
        ],
        "responses": {
          "200": {
            "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.",
            "schema": {
              "type": "object",
              "properties": {
                "DnsRule": {
                  "$ref": "#/definitions/DnsRule"
                }
              }
            },
            "examples": {
              "application/json": {
                "DnsRule": {
                  "dnsRuleId": "DnsRule1",
                  "domainName": "www.example.com",
                  "ipAddressType": "IP_V4",
                  "ipAddress": "146.241.7.3",
                  "ttl": 300,
                  "state": "ACTIVE"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "412": {
            "description": "Precondition Failed",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/applications/{appInstanceId}/subscriptions": {
      "parameters": [
        {
          "$ref": "#/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",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Upon success, a response body containing the list of links to the requested subscriptions is returned.",
            "schema": {
              "type": "object",
              "properties": {
                "Mp1SubscriptionLinkList": {
                  "$ref": "#/definitions/Mp1SubscriptionLinkList"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "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",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Body.SerAvailabilityNotificationSubscription"
          }
        ],
        "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",
                "type": "string",
                "format": "uri"
              }
            },
            "schema": {
              "type": "object",
              "properties": {
                "SerAvailabilityNotificationSubscription": {
                  "$ref": "#/definitions/SerAvailabilityNotificationSubscription"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/applications/{appInstanceId}/subscriptions/AppTerminationNotificationSubscription/{subscriptionId}": {
      "parameters": [
        {
          "$ref": "#/parameters/Path.AppInstanceId"
        },
        {
          "$ref": "#/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": "AppTerminationSubscription_GET",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Upon success, a response body containing the requested subscription is returned.",
            "schema": {
              "type": "object",
              "properties": {
                "AppTerminationNotificationSubscription": {
                  "$ref": "#/definitions/AppTerminationNotificationSubscription"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "description": "This method deletes a meMp1Subscription. This method is typically used in \"Unsubscribing from service availability event notifications\" procedure.",
        "operationId": "AppTerminationSubscription_DELETE",
        "produces": [
          "application/json"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/applications/{appInstanceId}/subscriptions/SerAvailabilityNotificationSubscription/{subscriptionId}": {
      "parameters": [
        {
          "$ref": "#/parameters/Path.AppInstanceId"
        },
        {
          "$ref": "#/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": "SerAvailabilitySubscription_GET",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "Upon success, a response body containing the requested subscription is returned.",
            "schema": {
              "type": "object",
              "properties": {
                "SerAvailabilityNotificationSubscription": {
                  "$ref": "#/definitions/SerAvailabilityNotificationSubscription"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "description": "This method deletes a meMp1Subscription. This method is typically used in \"Unsubscribing from service availability event notifications\" procedure.",
        "operationId": "SerAvailabilitySubscription_DELETE",
        "produces": [
          "application/json"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/applications/{appInstanceId}/traffic_rules": {
      "parameters": [
        {
          "$ref": "#/parameters/Path.AppInstanceId"
        }
      ],
      "get": {
        "description": "This method retrieves information about all the traffic rules associated with a MEC application instance.",
        "operationId": "ApplicationsTrafficRules.GET",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.",
            "schema": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "TrafficRule": {
                    "$ref": "#/definitions/TrafficRule"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/applications/{appInstanceId}/traffic_rules/{trafficRuleId}": {
      "parameters": [
        {
          "$ref": "#/parameters/Path.AppInstanceId"
        },
        {
          "$ref": "#/parameters/Path.TrafficRuleId"
        }
      ],
      "get": {
        "description": "This method retrieves information about all the traffic rules associated with a MEC application instance.",
        "operationId": "ApplicationsTrafficRule.GET",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "It is used to indicate nonspecific success. The response body contains a representation of the resource.",
            "schema": {
              "type": "object",
              "properties": {
                "TrafficRule": {
                  "$ref": "#/definitions/TrafficRule"
                }
              }
            },
            "examples": {
              "application/json": {
                "TrafficRule": {
                  "trafficRuleId": "TrafficRule123",
                  "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",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "description": "This method retrieves information about all the traffic rules associated with a MEC application instance.",
        "operationId": "ApplicationsTrafficRules.PUT",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/Body.TrafficRule"
          }
        ],
        "responses": {
          "200": {
            "description": "Upon success, a response body containing data type describing the updated TrafficRule is returned.",
            "schema": {
              "type": "object",
              "properties": {
                "TrafficRule": {
                  "$ref": "#/definitions/TrafficRule"
                }
              }
            },
            "examples": {
              "application/json": {
                "TrafficRule": {
                  "trafficRuleId": "TrafficRule123",
                  "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",
            "schema": {
              "type": "object",
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "type": "object",
              "required": [
                "ProblemDetails"
              ],
              "properties": {
                "ProblemDetails": {
                  "$ref": "#/definitions/ProblemDetails"