Commit 3f90c9a8 authored by Walter Featherstone's avatar Walter Featherstone
Browse files

Merge branch 'stf606-final' into 'master'

MEC021 v2.2.1 - OAS v.3.1

See merge request !6
parents f34a8950 9ede615c
Loading
Loading
Loading
Loading
Loading
+324 −35
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
  "openapi": "3.1.0",
  "info": {
    "title": "ETSI GS MEC 021 Application Mobility Service API",
    "version": "2.1.1",
    "version": "2.2.1",
    "description": "ETSI GS MEC 021 Application Mobility Service API described using OpenAPI.",
    "license": {
      "name": "BSD-3-Clause",
@@ -15,8 +15,8 @@
    }
  },
  "externalDocs": {
    "description": "ETSI GS MEC 021 Application Mobility Service API, v2.1.1",
    "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/021/02.01.01_60/gs_mec021v020101p.pdf"
    "description": "ETSI GS MEC 021 Application Mobility Service API, v2.2.1",
    "url": "https://www.etsi.org/deliver/etsi_gs/MEC/001_099/021/02.02.01_60/gs_mec021v020201p.pdf"
  },
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "servers": [
@@ -41,6 +41,10 @@
    {
      "name": "subscriptions",
      "description": "Subscription for Application Mobility Service"
    },
    {
      "name": "notifications",
      "description": "Notification for Application Mobility Service"
    }
  ],
  "paths": {
@@ -56,7 +60,7 @@
          {
            "name": "filter",
            "in": "query",
            "description": "Attribute-based filtering parameters according to ETSI GS MEC 011",
            "description": "Attribute-based filtering parameters according to ETSI GS MEC 009",
            "style": "form",
            "explode": true,
            "schema": {
@@ -76,7 +80,7 @@
          {
            "name": "fields",
            "in": "query",
            "description": "Complex attributes to be included into the response. See clause 6.18 in ETSI GS MEC 011",
            "description": "Complex attributes to be included into the response. See clause 6.18 in ETSI GS MEC 009",
            "style": "form",
            "explode": true,
            "schema": {
@@ -86,7 +90,7 @@
          {
            "name": "exclude_fields",
            "in": "query",
            "description": "Complex attributes to be excluded from the response.See clause 6.18 in ETSI GS MEC 011",
            "description": "Complex attributes to be excluded from the response.See clause 6.18 in ETSI GS MEC 009",
            "style": "form",
            "explode": true,
            "schema": {
@@ -111,7 +115,6 @@
            "content": {
              "application/json": {
                "schema": {
                  "minItems": 0,
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdjacentAppInstanceInfo"
@@ -1408,6 +1411,101 @@
        "deprecated": false
      },
      "parameters": []
    },
    "/uri_provided_by_subscriber": {
      "post": {
        "tags": [
          "notifications"
        ],
        "summary": "delivers a notification from the AMS resource to the subscriber",
        "description": "delivers a notification from the AMS resource to the subscriber",
        "operationId": "notificationPOST",
        "parameters": [],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MobilityProcedureNotification"
                  },
                  {
                    "$ref": "#/components/schemas/AdjacentAppInfoNotification"
                  },
                  {
                    "$ref": "#/components/schemas/ExpiryNotification"
                  }
                ],
                "contentMediaType": "application/json"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "The notification was delivered successfully. The response body shall be empty.",
            "headers": {},
            "content": {}
          },
          "401": {
            "description": "It is used when the client did not submit credentials.'",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "operation is not allowed given the current status of the resource.'",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Used when a client provided a URI that cannot be mapped to a valid resource URI.'",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "406": {
            "description": "Used to indicate that the server cannot provide the any of the content formats supported by the client.'",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Used when a rate limiter has triggered.'",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
@@ -1448,10 +1546,18 @@
            "$ref": "#/components/schemas/AdjacentAppInfoSubscription.links"
          },
          "callbackReference": {
            "type": "string",
            "type": "uri",
            "description": "URI selected by the service consumer to receive notifications on the subscribed Application Mobility Service. This shall be included both in the request and in response."
          },
          "requestTestNotification": {
            "type": "boolean",
            "description": "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, specified in ETSI GS MEC 009, as described in clause 6.12a."
          },
          "websockNotifConfig": {
            "$ref": "#/components/schemas/WebsockNotifConfig"
          },
          "expiryDeadline": {
            "description": "Identifies a boundary after which the subscription will expire.",
            "$ref": "#/components/schemas/TimeStamp"
          },
          "filterCriteria": {
@@ -1481,7 +1587,6 @@
            "description": "Identifier of the application descriptor."
          },
          "appInstanceCommLink": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommunicationInterface"
@@ -1494,6 +1599,10 @@
          },
          "mecHostInformation": {
            "$ref": "#/components/schemas/MECHostInformation"
          },
          "registeredInstanceId": {
            "type": "string",
            "description": "dentifier of the application instance that registers to the AMS, which is instantiated from the application descriptor identified by the attribute \"appDId\"."
          }
        }
      },
@@ -1558,10 +1667,9 @@
        "properties": {
          "appInstanceId": {
            "type": "string",
            "description": "Identifier of the application instance that registers the application mobility service."
            "description": "Identifier of the application instance that registers the Application Mobility Service."
          },
          "associateId": {
            "minItems": 0,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssociateId"
@@ -1569,7 +1677,6 @@
            "description": "0 to N identifiers to associate the information for specific UE(s) and flow(s)."
          },
          "mobilityStatus": {
            "minItems": 0,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MobilityStatus"
@@ -1579,10 +1686,22 @@
        },
        "description": "List of filtering criteria for the subscription. Any filtering criteria from below, which is included in the request, shall also be included in the response."
      },
      "WebsockNotifConfig": {
        "type": "object",
        "properties": {
          "websocketUri": {
            "description": "Set by AMS to indicate to the service consumer the Websocket URI to be used for delivering notifications.",
            "type": "uri"
          },
          "requestWebsocketUri": {
            "type": "boolean",
            "description": "Set to true by the service consumer to indicate that Websocket delivery is requested."
          }
        }
      },
      "MobilityProcedureSubscription": {
        "title": "MobilityProcedureSubscription",
        "required": [
          "callbackReference",
          "filterCriteria",
          "subscriptionType"
        ],
@@ -1592,10 +1711,19 @@
            "$ref": "#/components/schemas/MobilityProcedureSubscription.links"
          },
          "callbackReference": {
            "type": "string",
            "type": "uri",
            "description": "URI selected by the service consumer to receive notifications on the subscribed Application Mobility Service. This shall be included both in the request and in response."
          },
          "requestTestNotification": {
            "type": "boolean",
            "description": "Shall be set to TRUE by the service consumer to request a test notification via HTTP on the callbackReference URI, specified in ETSI GS MEC 009, as described in clause 6.12a."
          },
          "websockNotifConfig": {
            "description": "Provides details to negotiate and signal the use of a Websocket connection between AMS and the service consumer for notifications.",
            "$ref": "#/components/schemas/WebsockNotifConfig"
          },
          "expiryDeadline": {
            "description": "Identifies a boundary after which the subscription will expire.",
            "$ref": "#/components/schemas/TimeStamp"
          },
          "filterCriteria": {
@@ -1611,6 +1739,161 @@
          }
        }
      },
      "MobilityProcedureNotification": {
        "title": "MobilityProcedureNotification",
        "required": [
          "notificationType",
          "associateId",
          "mobilityStatus",
          "links"
        ],
        "properties": {
          "notificationType": {
            "type": "string",
            "description": "Shall be set to \"MobilityProcedureNotification\"."
          },
          "timeStamp": {
            "description": "Date and time of the generation of the notification",
            "$ref": "#/components/schemas/TimeStamp"
          },
          "associateId": {
            "type": "array",
            "description": "1 to N identifiers to associate the information for specific",
            "items": {
              "$ref": "#/components/schemas/AssociateId"
            }
          },
          "mobilityStatus": {
            "description": "Indicate the status of the UE mobility. Values are defined as following 1 = INTERHOST_MOVEOUT_TRIGGERED. 2 = INTERHOST_MOVEOUT_COMPLETED. 3 = INTERHOST_MOVEOUT_FAILED. Other values are reserved.",
            "$ref": "#/components/schemas/MobilityStatus"
          },
          "targetAppInfo": {
            "type": "object",
            "required": [
              "appInstanceId"
            ],
            "properties": {
              "appInstanceId": {
                "type": "string",
                "description": "Identifiers of the target application instance."
              },
              "commInterface": {
                "description": "If present, it specifies the communication interface of the application instance.",
                "$ref": "#/components/schemas/CommunicationInterface"
              }
            }
          },
          "_links": {
            "$ref": "#/components/schemas/LinkType"
          }
        }
      },
      "AdjacentAppInfoNotification": {
        "title": "AdjacentAppInfoNotification",
        "required": [
          "notificationType",
          "_links"
        ],
        "properties": {
          "notificationType": {
            "type": "string",
            "description": "Shall be set to \"AdjacentAppInfoNotification\"."
          },
          "timeStamp": {
            "description": "Date and time of the generation of the notification",
            "$ref": "#/components/schemas/TimeStamp"
          },
          "associateId": {
            "type": "array",
            "description": "1 to N identifiers to associate the information for specific",
            "items": {
              "$ref": "#/components/schemas/AssociateId"
            }
          },
          "adjacentAppInfo": {
            "type": "object",
            "required": [
              "appInstanceId",
              "commInterface"
            ],
            "properties": {
              "appInstanceId": {
                "type": "string",
                "description": "Identifier of the adjacent application instance."
              },
              "commInterface": {
                "type": "array",
                "description": "If present, it represents the communication interface(s) information of the application instance.",
                "items": {
                  "$ref": "#/components/schemas/CommunicationInterface"
                }
              }
            }
          },
          "_links": {
            "$ref": "#/components/schemas/LinkType"
          }
        }
      },
      "ExpiryNotification": {
        "title": "ExpiryNotification",
        "required": [
          "notificationType",
          "_links",
          "expiryDeadline"
        ],
        "properties": {
          "notificationType": {
            "type": "string",
            "description": "Shall be set to \"ExpiryNotification\"."
          },
          "timeStamp": {
            "description": "Date and time of the generation of the notification",
            "$ref": "#/components/schemas/TimeStamp"
          },
          "_links": {
            "type": "object",
            "required": [
              "subscription"
            ],
            "properties": {
              "subscription": {
                "$ref": "#/components/schemas/LinkType"
              }
            }
          },
          "expiryDeadline": {
            "description": "The boundary value setting in the subscription request.",
            "$ref": "#/components/schemas/TimeStamp"
          }
        }
      },
      "TestNotification": {
        "title": "TestNotification",
        "required": [
          "notificationType",
          "_links"
        ],
        "properties": {
          "notificationType": {
            "type": "string",
            "description": "Shall be set to \"TestNotification\"."
          },
          "_links": {
            "type": "object",
            "description": "Hyperlink related to the resource.",
            "required": [
              "subscription"
            ],
            "properties": {
              "subscription": {
                "description": "URI identifying the subscription for the test notification.",
                "$ref": "#/components/schemas/LinkType"
              }
            }
          }
        }
      },
      "MobilityStatus": {
        "title": "MobilityStatus",
        "enum": [
@@ -1648,11 +1931,11 @@
        "properties": {
          "appInstanceId": {
            "type": "string",
            "description": "If present, it represents the identifier of the application instance registering the application mobility service."
            "description": "If present, it represents the identifier of the application instance registering the Application Mobility Service."
          },
          "mepId": {
            "type": "string",
            "description": "If present, it represents the identifier of the MEC platform registering the application mobility service."
            "description": "If present, it represents the identifier of the MEC platform registering the Application Mobility Service."
          }
        },
        "description": "The identifier of service consumer requesting the application mobility service, i.e. either the application instance ID or the MEC platform ID."
@@ -1669,16 +1952,15 @@
            "description": "The identifier of registered application mobility service. Shall be absent in POST requests, and present otherwise."
          },
          "deviceInformation": {
            "minItems": 0,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RegistrationInfo.deviceInformation"
            },
            "description": "If present, it specifies the device served by the application instance which is registering the application mobility service."
            "description": "If present, it specifies the device served by the application instance which is registering is registering the Application Mobility Service."
          },
          "expiryTime": {
            "type": "integer",
            "description": "If present, it indicates the time of application mobility service expiration from the time of registration accepted.The value \"0\" means infinite time, i.e. no expiration.The unit of expiry time is one second.",
            "description": "If present, it indicates the time of Application Mobility Service expiration from the time of registration accepted.The value \"0\" means infinite time, i.e. no expiration.The unit of expiry time is one second.",
            "contentEncoding": "int32"
          },
          "serviceConsumerId": {
@@ -1688,16 +1970,24 @@
      },
      "SubscriptionLinkList.links": {
        "title": "SubscriptionLinkList.links",
        "description": "List of hyperlinks related to the resource.",
        "required": [
          "self"
        ],
        "type": "object",
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          }
            "$ref": "#/components/schemas/LinkType",
            "description": "URI of this resource."
          },
        "description": "List of hyperlinks related to the resource."
          "subscription": {
            "type": "array",
            "description": "The service consumer’s subscriptions.",
            "items": {
              "$ref": "#/components/schemas/SubscriptionLinkList.subscription"
            }
          }
        }
      },
      "SubscriptionLinkList.subscription": {
        "title": "SubscriptionLinkList.subscription",
@@ -1712,6 +2002,7 @@
            "description": "The URI referring to the subscription."
          },
          "subscriptionType": {
            "description": null,
            "$ref": "#/components/schemas/subscriptionType"
          }
        }
@@ -1724,15 +2015,8 @@
        "type": "object",
        "properties": {
          "_links": {
            "$ref": "#/components/schemas/SubscriptionLinkList.links"
          },
          "subscription": {
            "minItems": 0,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SubscriptionLinkList.subscription"
            },
            "description": "A link to a subscription."
            "$ref": "#/components/schemas/SubscriptionLinkList.links",
            "description": "Hyperlinks related to the resource."
          }
        }
      },
@@ -1813,6 +2097,12 @@
        },
        "description": "'This data type represents the time stamp as Unix-time since January 1, 1970, 00:00:00 UTC'"
      },
      "KeyValuePairs": {
        "type": "object",
        "additionalProperties": {
          "type": "object"
        }
      },
      "MECHostInformation": {
        "title": "MECHostInformation",
        "required": [
@@ -1825,11 +2115,10 @@
            "description": "Human-readable name of MEC host."
          },
          "hostId": {
            "type": "object",
            "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'"
            "description": "'This data type represents a list of key-value pairs. The order of the pairs in the list is not significant. In JSON, a set of key-value pairs is represented as an object. It shall comply with the provisions defined in clause 4 of IETF RFC 8259'",
            "$ref": "#/components/schemas/KeyValuePairs"
          }
        }
        },
        "description": "'The data type represents the parameters of MEC host information.'"
      },
      "ProblemDetails": {
        "title": "ProblemDetails",
+236 −29

File changed.

Preview size limit exceeded, changes collapsed.