MEC021_AppMobilityService.json 72.2 KB
Newer Older
Elian Kraja's avatar
Elian Kraja committed
{
  "openapi": "3.1.0",
Elian Kraja's avatar
Elian Kraja committed
  "info": {
    "title": "ETSI GS MEC 021 Application Mobility Service API",
Elian Kraja's avatar
Elian Kraja committed
    "description": "ETSI GS MEC 021 Application Mobility Service API described using OpenAPI.",
    "license": {
      "name": "BSD-3-Clause",
      "url": "https://forge.etsi.org/legal-matters"
    },
    "contact": {
Elian Kraja's avatar
Elian Kraja committed
      "name": "ETSI Forge",
      "url": "https://forge.etsi.org/rep/mec/gs021-amsi-api",
      "email": "cti_support@etsi.org"
Elian Kraja's avatar
Elian Kraja committed
    }
  },
  "externalDocs": {
    "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"
Elian Kraja's avatar
Elian Kraja committed
  },
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
Elian Kraja's avatar
Elian Kraja committed
  "servers": [
    {
      "url": "https://localhost/amsi/v1",
      "variables": {}
Elian Kraja's avatar
Elian Kraja committed
    }
  ],
  "tags": [
    {
      "name": "adj-app-inst",
      "description": "Adjacent App instances"
    },
    {
      "name": "app-mob-ser",
      "description": "Application Mobility Services"
    },
    {
      "name": "app-mob-ser-der",
      "description": "Application Mobility Services Deregister task"
    },
    {
      "name": "subscriptions",
      "description": "Subscription for Application Mobility Service"
    },
    {
      "name": "notifications",
      "description": "Notification for Application Mobility Service"
Elian Kraja's avatar
Elian Kraja committed
    }
  ],
  "paths": {
    "/queries/adjacent_app_instances": {
      "get": {
        "tags": [
          "adj-app-inst"
        ],
        "summary": "Retrieve information about this subscription.",
        "description": "Retrieve information about this subscription.",
        "operationId": "adj_app_instGET",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Attribute-based filtering parameters according to ETSI GS MEC 009",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "all_fields",
            "in": "query",
            "description": "Include all complex attributes in the response.",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Complex attributes to be included into the response. See clause 6.18 in ETSI GS MEC 009",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "exclude_fields",
            "in": "query",
            "description": "Complex attributes to be excluded from the response.See clause 6.18 in ETSI GS MEC 009",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "exclude_default",
            "in": "query",
            "description": "Indicates to exclude the following complex attributes from the response  See clause 6.18 in ETSI GS MEC 011 for details.",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A response body containing  zero or more adjacent application instances",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AdjacentAppInstanceInfo"
                  },
                  "description": "",
                  "contentMediaType": "application/json"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found :  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": "Not Acceptable : 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": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "deprecated": false
      },
      "parameters": []
    },
Elian Kraja's avatar
Elian Kraja committed
    "/app_mobility_services": {
      "get": {
        "tags": [
          "app-mob-ser"
        ],
        "summary": "Retrieve information about the registered application mobility service.",
Elian Kraja's avatar
Elian Kraja committed
        "description": " Retrieve information about the registered application mobility service.",
        "operationId": "app_mobility_serviceGET",
        "parameters": [
          {
            "name": "filter",
            "in": "query",
            "description": "Attribute-based filtering parameters according to ETSI GS MEC 011",
            "style": "form",
            "explode": true,
Elian Kraja's avatar
Elian Kraja committed
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
          },
          {
            "name": "all_fields",
            "in": "query",
            "description": "Include all complex attributes in the response.",
            "style": "form",
            "explode": true,
Elian Kraja's avatar
Elian Kraja committed
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
          },
          {
            "name": "fields",
            "in": "query",
            "description": "Complex attributes to be included into the response. See clause 6.18 in ETSI GS MEC 011",
            "style": "form",
            "explode": true,
Elian Kraja's avatar
Elian Kraja committed
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
          },
          {
            "name": "exclude_fields",
            "in": "query",
            "description": "Complex attributes to be excluded from the response.See clause 6.18 in ETSI GS MEC 011",
            "style": "form",
            "explode": true,
Elian Kraja's avatar
Elian Kraja committed
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
          },
          {
            "name": "exclude_default",
            "in": "query",
            "description": "Indicates to exclude the following complex attributes from the response  See clause 6.18 in ETSI GS MEC 011 for details.",
            "style": "form",
            "explode": true,
Elian Kraja's avatar
Elian Kraja committed
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
          }
        ],
        "responses": {
          "200": {
            "description": "Contains in an array the representations of zero or more application mobility services.",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RegistrationInfo"
                  },
                  "description": "",
                  "contentMediaType": "application/json"
Elian Kraja's avatar
Elian Kraja committed
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
Elian Kraja's avatar
Elian Kraja committed
      },
      "post": {
        "tags": [
          "app-mob-ser"
        ],
        "summary": "Create a new application mobility service for the service requester.",
        "description": "Create a new application mobility service for the service requester.",
        "operationId": "app_mobility_servicePOST",
        "parameters": [],
Elian Kraja's avatar
Elian Kraja committed
        "requestBody": {
          "description": "Application mobility service to be created",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistrationInfo"
              }
            }
          },
          "required": true
Elian Kraja's avatar
Elian Kraja committed
        },
        "responses": {
          "201": {
            "description": "Successful response for application mobility service creation",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrationInfo"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
      },
      "parameters": []
Elian Kraja's avatar
Elian Kraja committed
    },
    "/app_mobility_services/{appMobilityServiceId}": {
      "get": {
        "tags": [
          "app-mob-ser"
        ],
        "summary": "Retrieve information about this individual application mobility service",
        "description": "Retrieve information about this individual application mobility service",
        "operationId": "app_mobility_service_by_idGET",
        "parameters": [
          {
            "name": "appMobilityServiceId",
            "in": "path",
            "description": "It uniquely identifies the created individual application mobility service",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
Elian Kraja's avatar
Elian Kraja committed
        "responses": {
          "200": {
            "description": "Contains a representation of the application mobility service.",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrationInfo"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
Elian Kraja's avatar
Elian Kraja committed
      },
      "put": {
        "tags": [
          "app-mob-ser"
        ],
        "summary": " update the existing individual application mobility service",
        "description": " update the existing individual application mobility service",
        "operationId": "app_mobility_service_by_idPUT",
        "parameters": [
          {
            "name": "appMobilityServiceId",
            "in": "path",
            "description": "It uniquely identifies the created individual application mobility service",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
Elian Kraja's avatar
Elian Kraja committed
        "requestBody": {
          "description": "",
Elian Kraja's avatar
Elian Kraja committed
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegistrationInfo"
              }
            }
          },
          "required": true
Elian Kraja's avatar
Elian Kraja committed
        },
        "responses": {
          "200": {
            "description": "Contains a data type describing the updated application mobility service.",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegistrationInfo"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "412": {
            "description": "Precondition failed :  used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "422": {
            "description": "Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
Elian Kraja's avatar
Elian Kraja committed
      },
      "delete": {
        "tags": [
          "app-mob-ser"
        ],
        "summary": " deregister the individual application mobility service",
        "description": " deregister the individual application mobility service",
        "operationId": "app_mobility_service_by_idDELETE",
        "parameters": [
          {
            "name": "appMobilityServiceId",
            "in": "path",
            "description": "It uniquely identifies the created individual application mobility service",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
Elian Kraja's avatar
Elian Kraja committed
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {},
            "content": {}
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
      },
      "parameters": []
Elian Kraja's avatar
Elian Kraja committed
    },
    "/app_mobility_services/{appMobilityServiceId}/deregister_task": {
      "post": {
        "tags": [
          "app-mob-ser-der"
        ],
        "summary": " deregister the individual application mobility service",
        "description": " deregister the individual application mobility service",
        "operationId": "app_mobility_service_derPOST",
        "parameters": [
          {
            "name": "appMobilityServiceId",
            "in": "path",
            "description": "It uniquely identifies the created individual application mobility service",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
Elian Kraja's avatar
Elian Kraja committed
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {},
            "content": {}
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
      },
      "parameters": []
Elian Kraja's avatar
Elian Kraja committed
    },
    "/subscriptions": {
Elian Kraja's avatar
Elian Kraja committed
      "get": {
        "tags": [
          "subscriptions"
        ],
        "summary": "Retrieve information about the subscriptions for this requestor.",
        "description": "Retrieve information about the subscriptions for this requestor.",
        "operationId": "subGET",
        "parameters": [
          {
            "name": "subscriptionType",
            "in": "query",
Elian Kraja's avatar
Elian Kraja committed
            "description": "Query parameter to filter on a specific subscription type. Permitted values: mobility_proc or adj_app_info",
            "required": true,
            "style": "form",
            "explode": true,
Elian Kraja's avatar
Elian Kraja committed
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
          }
        ],
        "responses": {
          "200": {
            "description": "Contains  the list of links to requestor subscriptions.",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubscriptionLinkList"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
Elian Kraja's avatar
Elian Kraja committed
      },
      "post": {
        "tags": [
          "subscriptions"
        ],
        "summary": "Create a new subscription to Application Mobility Service notifications.",
        "description": "Create a new subscription to Application Mobility Service notifications.",
        "operationId": "subPOST",
        "parameters": [],
Elian Kraja's avatar
Elian Kraja committed
        "requestBody": {
          "description": "",
Elian Kraja's avatar
Elian Kraja committed
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MobilityProcedureSubscription"
                  },
                  {
                    "$ref": "#/components/schemas/AdjacentAppInfoSubscription"
                  }
                ],
                "contentMediaType": "application/json"
Elian Kraja's avatar
Elian Kraja committed
              }
            }
          },
          "required": true
Elian Kraja's avatar
Elian Kraja committed
        },
        "responses": {
          "201": {
            "description": "Created subscription is described using the appropriate data type",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MobilityProcedureSubscription"
                    },
                    {
                      "$ref": "#/components/schemas/AdjacentAppInfoSubscription"
                    }
                  ],
                  "contentMediaType": "application/json"
Elian Kraja's avatar
Elian Kraja committed
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "415": {
            "description": "Unsupported Media Type :  used to indicate that the server or the client does not support the content type of the entity body.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "422": {
            "description": "Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
      },
      "parameters": []
Elian Kraja's avatar
Elian Kraja committed
    },
    "/subscriptions/{subscriptionId}": {
      "get": {
        "tags": [
          "subscriptions"
        ],
        "summary": "Retrieve information about this subscription.",
        "description": "Retrieve information about this subscription.",
        "operationId": "sub_byIdGET",
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "Refers to created subscription, where the AMS API allocates a unique resource name for this subscription",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
Elian Kraja's avatar
Elian Kraja committed
        "responses": {
          "200": {
            "description": "A response body containing data type describing the specific RNI event subscription",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MobilityProcedureSubscription"
                    },
                    {
                      "$ref": "#/components/schemas/AdjacentAppInfoSubscription"
                    }
                  ],
                  "contentMediaType": "application/json"
Elian Kraja's avatar
Elian Kraja committed
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
Elian Kraja's avatar
Elian Kraja committed
      },
      "put": {
        "tags": [
          "subscriptions"
        ],
        "summary": "update the existing individual subscription.",
        "description": "update the existing individual subscription.",
        "operationId": "sub_byIdPUT",
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "Refers to created subscription, where the AMS API allocates a unique resource name for this subscription",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
Elian Kraja's avatar
Elian Kraja committed
        "requestBody": {
          "description": "",
Elian Kraja's avatar
Elian Kraja committed
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/MobilityProcedureSubscription"
                  },
                  {
                    "$ref": "#/components/schemas/AdjacentAppInfoSubscription"
                  }
                ],
                "contentMediaType": "application/json"
Elian Kraja's avatar
Elian Kraja committed
              }
            }
          },
          "required": true
Elian Kraja's avatar
Elian Kraja committed
        },
        "responses": {
          "200": {
            "description": "a response body containing data type describing the updated subscription",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MobilityProcedureSubscription"
                    },
                    {
                      "$ref": "#/components/schemas/AdjacentAppInfoSubscription"
                    }
                  ],
                  "contentMediaType": "application/json"
Elian Kraja's avatar
Elian Kraja committed
                }
              }
            }
          },
          "400": {
            "description": "Bad Request : used to indicate that incorrect parameters were passed to the request.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "406": {
            "description": "Not Acceptable : 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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "412": {
            "description": "Precondition failed :  used when a condition has failed during conditional requests, e.g. when using ETags to avoid write conflicts when using PUT",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "422": {
            "description": "Unprocessable Entity : used to indicate that the server understands the content type of the request entity and that the syntax of the request entity is correct but that the server is unable to process the contained instructions. This error condition can occur if an JSON request body is syntactically correct but semantically incorrect, for example if the target area for the request is considered too large. This error condition can also occur if the capabilities required by the request are not supported.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "deprecated": false
Elian Kraja's avatar
Elian Kraja committed
      },
      "delete": {
        "tags": [
          "subscriptions"
        ],
        "summary": "cancel the existing individual subscription",
        "description": "cancel the existing individual subscription",
        "operationId": "sub_byIdDELETE",
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "description": "Refers to created subscription, where the AMS API allocates a unique resource name for this subscription",
            "required": true,
            "style": "simple",
Elian Kraja's avatar
Elian Kraja committed
            "schema": {
              "type": "string"
Elian Kraja's avatar
Elian Kraja committed
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {},
            "content": {}
          },
          "401": {
            "description": "Unauthorized :  used when the client did not submit credentials.",
            "headers": {},
Elian Kraja's avatar
Elian Kraja committed
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
Elian Kraja's avatar
Elian Kraja committed
                }
              }
            }
          },
          "403": {
            "description": "Forbidden :  operation is not allowed given the current status of the resource.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "404": {
            "description": "Not Found :  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"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          },
          "429": {
            "description": "Too Many Requests : used when a rate limiter has triggered.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "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"
                }
              }
            }
          }
        }
      }
Elian Kraja's avatar
Elian Kraja committed
    }
  },
  "components": {
    "schemas": {
      "AdjacentAppInfoSubscription.links": {
        "title": "AdjacentAppInfoSubscription.links",
Elian Kraja's avatar
Elian Kraja committed
        "required": [
          "self"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          }
        },
        "description": "Hyperlink related to the resource. This shall be only included in the HTTP responses and in HTTP PUT requests."
Elian Kraja's avatar
Elian Kraja committed
      },
      "AdjacentAppInfoSubscription.filterCriteria": {
        "title": "AdjacentAppInfoSubscription.filterCriteria",
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "appInstanceId": {
            "type": "string"
          }
        },
        "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."
Elian Kraja's avatar
Elian Kraja committed
      },
      "AdjacentAppInfoSubscription": {
        "title": "AdjacentAppInfoSubscription",
        "required": [
          "callbackReference",
          "filterCriteria",
          "subscriptionType"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "_links": {
            "$ref": "#/components/schemas/AdjacentAppInfoSubscription.links"
          },
          "callbackReference": {
            "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."
Elian Kraja's avatar
Elian Kraja committed
          },
          "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"
          },
Elian Kraja's avatar
Elian Kraja committed
          "expiryDeadline": {
            "description": "Identifies a boundary after which the subscription will expire.",
Elian Kraja's avatar
Elian Kraja committed
            "$ref": "#/components/schemas/TimeStamp"
          },
          "filterCriteria": {
            "$ref": "#/components/schemas/AdjacentAppInfoSubscription.filterCriteria"
          },
          "subscriptionType": {
            "const": "AdjacentAppInfoSubscription",
Elian Kraja's avatar
Elian Kraja committed
            "type": "string",
            "description": "Shall be set to \"AdjacentAppInfoSubscription\".",
            "examples": [
Elian Kraja's avatar
Elian Kraja committed
              "AdjacentAppInfoSubscription"
Elian Kraja's avatar
Elian Kraja committed
          }
        }
      },
      "AdjacentAppInstanceInfo": {
        "title": "AdjacentAppInstanceInfo",
Elian Kraja's avatar
Elian Kraja committed
        "required": [
          "appDId",
          "appInstanceCommLink",
          "appInstanceId"
Elian Kraja's avatar
Elian Kraja committed
        ],
        "type": "object",
        "properties": {
          "appDId": {
            "type": "string",
            "description": "Identifier of the application descriptor."
Elian Kraja's avatar
Elian Kraja committed
          },
          "appInstanceCommLink": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommunicationInterface"
            },
            "description": "It specifies the communication interface of application instance."
Elian Kraja's avatar
Elian Kraja committed
          },
          "appInstanceId": {
            "type": "string",
            "description": "Identifier of the application instance."
Elian Kraja's avatar
Elian Kraja committed
          },
          "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\"."
Elian Kraja's avatar
Elian Kraja committed
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "AppMobilityServiceLevel": {
        "title": "AppMobilityServiceLevel",
Elian Kraja's avatar
Elian Kraja committed
        "enum": [
          "APP_MOBILITY_NOT_ALLOWED",
          "APP_MOBILITY_WITH_CONFIRMATION",
          "APP_MOBILITY_WITHOUT_CONFIRMATION"
        ],
        "type": "string",
        "description": "This attribute provides an option for the application instance (server) to communicate with the application client before relocating this application instance to another MEC host.",
        "examples": [
          "APP_MOBILITY_NOT_ALLOWED"
        ]
Elian Kraja's avatar
Elian Kraja committed
      },
      "CommunicationInterface.IpAddresses": {
        "title": "CommunicationInterface.IpAddresses",
Elian Kraja's avatar
Elian Kraja committed
        "required": [
          "host",
          "port"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "host": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "contentEncoding": "int32"
Elian Kraja's avatar
Elian Kraja committed
          }
        }
      },
      "CommunicationInterface": {
        "title": "CommunicationInterface",
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "ipAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommunicationInterface.IpAddresses"
            },
            "description": ""
Elian Kraja's avatar
Elian Kraja committed
          }
        }
      },
      "MobilityProcedureSubscription.links": {
        "title": "MobilityProcedureSubscription.links",
        "required": [
          "self"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType"
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "MobilityProcedureSubscription.filterCriteria": {
        "title": "MobilityProcedureSubscription.filterCriteria",
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "appInstanceId": {
            "type": "string",
            "description": "Identifier of the application instance that registers the Application Mobility Service."
Elian Kraja's avatar
Elian Kraja committed
          },
          "associateId": {
            "type": "array",
Elian Kraja's avatar
Elian Kraja committed
            "items": {
              "$ref": "#/components/schemas/AssociateId"
            },
            "description": "0 to N identifiers to associate the information for specific UE(s) and flow(s)."
Elian Kraja's avatar
Elian Kraja committed
          },
          "mobilityStatus": {
            "type": "array",
Elian Kraja's avatar
Elian Kraja committed
            "items": {
              "$ref": "#/components/schemas/MobilityStatus"
            },
            "description": "In case mobilityStatus is not included in the subscription request, the default value 1 = INTER_HOST_MOBILITY_TRIGGERED shall be used and included in the response."
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "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."
Elian Kraja's avatar
Elian Kraja committed
      },
      "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."
          }
        }
      },
Elian Kraja's avatar
Elian Kraja committed
      "MobilityProcedureSubscription": {
        "title": "MobilityProcedureSubscription",
        "required": [
          "filterCriteria",
          "subscriptionType"
        ],
Elian Kraja's avatar
Elian Kraja committed
        "type": "object",
        "properties": {
          "_links": {
            "$ref": "#/components/schemas/MobilityProcedureSubscription.links"
          },
          "callbackReference": {
            "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."
Elian Kraja's avatar
Elian Kraja committed
          },
          "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"
          },
Elian Kraja's avatar
Elian Kraja committed
          "expiryDeadline": {
            "description": "Identifies a boundary after which the subscription will expire.",
Elian Kraja's avatar
Elian Kraja committed
            "$ref": "#/components/schemas/TimeStamp"
          },
          "filterCriteria": {
            "$ref": "#/components/schemas/MobilityProcedureSubscription.filterCriteria"
          },
          "subscriptionType": {
            "const": "MobilityProcedureSubscription",
Elian Kraja's avatar
Elian Kraja committed
            "type": "string",
            "description": "Shall be set to \"MobilityProcedureSubscription\".",
            "examples": [
Elian Kraja's avatar
Elian Kraja committed
              "MobilityProcedureSubscription"
Elian Kraja's avatar
Elian Kraja committed
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "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"
              }
            }
          }
        }
      },
Elian Kraja's avatar
Elian Kraja committed
      "MobilityStatus": {
        "title": "MobilityStatus",
Elian Kraja's avatar
Elian Kraja committed
        "enum": [
          "INTERHOST_MOVEOUT_TRIGGERED",
          "INTERHOST_MOVEOUT_COMPLETED",
          "INTERHOST_MOVEOUT_FAILED"
        ],
        "type": "string",
        "description": "Indicate the status of the UE mobility",
        "examples": [
          "INTERHOST_MOVEOUT_TRIGGERED"
        ]
Elian Kraja's avatar
Elian Kraja committed
      },
      "RegistrationInfo.deviceInformation": {
        "title": "RegistrationInfo.deviceInformation",
Elian Kraja's avatar
Elian Kraja committed
        "required": [
          "associateId"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "associateId": {
            "$ref": "#/components/schemas/AssociateId"
          },
          "appMobilityServiceLevel": {
            "$ref": "#/components/schemas/AppMobilityServiceLevel"
          },
          "contextTransferState": {
            "$ref": "#/components/schemas/contextTransferState"
          }
        }
      },
      "RegistrationInfo.serviceConsumerId": {
        "title": "RegistrationInfo.serviceConsumerId",
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "appInstanceId": {
            "type": "string",
            "description": "If present, it represents the identifier of the application instance registering the Application Mobility Service."
Elian Kraja's avatar
Elian Kraja committed
          },
          "mepId": {
            "type": "string",
            "description": "If present, it represents the identifier of the MEC platform registering the Application Mobility Service."
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "description": "The identifier of service consumer requesting the application mobility service, i.e. either the application instance ID or the MEC platform ID."
Elian Kraja's avatar
Elian Kraja committed
      },
      "RegistrationInfo": {
        "title": "RegistrationInfo",
        "required": [
          "serviceConsumerId"
        ],
Elian Kraja's avatar
Elian Kraja committed
        "type": "object",
        "properties": {
          "appMobilityServiceId": {
            "type": "string",
            "description": "The identifier of registered application mobility service. Shall be absent in POST requests, and present otherwise."
Elian Kraja's avatar
Elian Kraja committed
          },
          "deviceInformation": {
            "type": "array",
Elian Kraja's avatar
Elian Kraja committed
            "items": {
              "$ref": "#/components/schemas/RegistrationInfo.deviceInformation"
            "description": "If present, it specifies the device served by the application instance which is registering is registering the Application Mobility Service."
Elian Kraja's avatar
Elian Kraja committed
          },
          "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.",
            "contentEncoding": "int32"
Elian Kraja's avatar
Elian Kraja committed
          },
          "serviceConsumerId": {
            "$ref": "#/components/schemas/RegistrationInfo.serviceConsumerId"
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "SubscriptionLinkList.links": {
        "title": "SubscriptionLinkList.links",
        "description": "List of hyperlinks related to the resource.",
        "required": [
          "self"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "self": {
            "$ref": "#/components/schemas/LinkType",
            "description": "URI of this resource."
          },
          "subscription": {
            "type": "array",
            "description": "The service consumer’s subscriptions.",
            "items": {
              "$ref": "#/components/schemas/SubscriptionLinkList.subscription"
            }
Elian Kraja's avatar
Elian Kraja committed
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "SubscriptionLinkList.subscription": {
        "title": "SubscriptionLinkList.subscription",
        "required": [
          "href",
          "subscriptionType"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "href": {
            "type": "string",
            "description": "The URI referring to the subscription."
Elian Kraja's avatar
Elian Kraja committed
          },
          "subscriptionType": {
Elian Kraja's avatar
Elian Kraja committed
            "$ref": "#/components/schemas/subscriptionType"
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "SubscriptionLinkList": {
        "title": "SubscriptionLinkList",
        "required": [
          "_links"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "_links": {
            "$ref": "#/components/schemas/SubscriptionLinkList.links",
            "description": "Hyperlinks related to the resource."
Elian Kraja's avatar
Elian Kraja committed
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "contextTransferState": {
        "title": "contextTransferState",
Elian Kraja's avatar
Elian Kraja committed
        "enum": [
          "NOT_TRANSFERRED",
          "USER_CONTEXT_TRANSFER_COMPLETED"
        ],
        "type": "string",
        "description": "If present, it represents the state of transferring the user context to another application instance.",
        "examples": [
          "NOT_TRANSFERRED"
        ]
Elian Kraja's avatar
Elian Kraja committed
      },
      "subscriptionType": {
        "title": "subscriptionType",
Elian Kraja's avatar
Elian Kraja committed
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "description": "Numeric value (0 - 255) corresponding to specified type of subscription as following: 0 = RESERVED. 1 = MOBILITY_PROCEDURE. 2 = ADJACENT_APPINFO.",
        "examples": [
          0
        ]
Elian Kraja's avatar
Elian Kraja committed
      },
      "AssociateId": {
        "title": "AssociateId",
        "required": [
          "type",
          "value"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Type"
Elian Kraja's avatar
Elian Kraja committed
          },
          "value": {
            "type": "string",
            "description": "Value for the identifier."
Elian Kraja's avatar
Elian Kraja committed
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "LinkType": {
        "title": "LinkType",
Elian Kraja's avatar
Elian Kraja committed
        "required": [
          "href"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "href": {
            "type": "string",
            "description": "The URI referring to the subscription."
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "description": "'This data type represents a type of link'"
Elian Kraja's avatar
Elian Kraja committed
      },
      "TimeStamp": {
        "title": "TimeStamp",
Elian Kraja's avatar
Elian Kraja committed
        "required": [
          "seconds",
          "nanoSeconds"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "seconds": {
            "type": "integer",
            "description": "'The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.'",
            "contentEncoding": "int32"
Elian Kraja's avatar
Elian Kraja committed
          },
          "nanoSeconds": {
            "type": "integer",
            "description": "'The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC.'",
            "contentEncoding": "int32"
Elian Kraja's avatar
Elian Kraja committed
          }
        },
        "description": "'This data type represents the time stamp as Unix-time since January 1, 1970, 00:00:00 UTC'"
Elian Kraja's avatar
Elian Kraja committed
      },
      "KeyValuePairs": {
        "type": "object",
        "additionalProperties": {
          "type": "object"
        }
      },
Elian Kraja's avatar
Elian Kraja committed
      "MECHostInformation": {
        "title": "MECHostInformation",
Elian Kraja's avatar
Elian Kraja committed
        "required": [
          "hostId"
        ],
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "hostName": {
            "type": "string",
            "description": "Human-readable name of MEC host."
Elian Kraja's avatar
Elian Kraja committed
          },
          "hostId": {
            "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"
Elian Kraja's avatar
Elian Kraja committed
          }
Elian Kraja's avatar
Elian Kraja committed
      },
      "ProblemDetails": {
        "title": "ProblemDetails",
        "type": "object",
Elian Kraja's avatar
Elian Kraja committed
        "properties": {
          "detail": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem"
Elian Kraja's avatar
Elian Kraja committed
          },
          "instance": {
            "type": "string",
            "description": "A URI reference that identifies the specific occurrence of the problem"
Elian Kraja's avatar
Elian Kraja committed
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code for this occurrence of the problem",
            "contentEncoding": "int32"
Elian Kraja's avatar
Elian Kraja committed
          },
          "title": {
            "type": "string",
            "description": "A short, human-readable summary of the problem type"
Elian Kraja's avatar
Elian Kraja committed
          },
          "type": {
            "type": "string",
            "description": "A URI reference according to IETF RFC 3986 that identifies the problem type"
Elian Kraja's avatar
Elian Kraja committed
          }
        }
      },
      "Type": {
        "title": "Type",
        "enum": [
          "UE_IPv4_ADDRESS",
          "UE_IPV6_ADDRESS",
          "NATED_IP_ADDRESS",
          "GTP_TEID"
        ],
        "type": "string",
        "description": "Numeric value (0-255) corresponding to specified type of identifier",
        "examples": [
          "UE_IPv4_ADDRESS"
        ]
Elian Kraja's avatar
Elian Kraja committed
      }
    }
  },
  "security": [
    {}
  ]
Elian Kraja's avatar
Elian Kraja committed
}