openapi: 3.0.0
info:
  title: 'ETSI GS MEC 021 Application Mobility Service API'
  version: 2.2.1
  description:
    'ETSI GS MEC 021 Application Mobility Service API described using OpenAPI.
    <p>**Note**<br>MEC Sandbox supports a subset of AMS API endpoints; complete details on AMS API can be found on [ETSI Forge](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/021/02.02.01_60/gs_mec021v020201p.pdf)'
  license:
    name: BSD-3-Clause
    url: 'https://forge.etsi.org/legal-matters'
  contact:
    name: ETSI Forge
    email: cti_support@etsi.org
    url: https://forge.etsi.org/rep/mec/gs021-amsi-api
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'
servers:
  - url: 'https://localhost/sandboxname/amsi/v1'
tags:
  - name: amsi
  - name: unsupported
paths:
  /queries/adjacent_app_instances:
    get:
      tags:
        - unsupported
      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
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: all_fields
          in: query
          description: Include all complex attributes in the response.
          required: false
          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
          required: false
          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
          required: false
          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.
          required: false
          style: form
          explode: true
          schema:
            type: string
      responses:
        '200':
          description:
            A response body containing  zero or more adjacent application
            instances
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AdjacentAppInstanceInfo'
                x-content-type: application/json
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
  /app_mobility_services:
    get:
      tags:
        - amsi
      summary: Retrieve information about the registered application mobility service.
      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
          required: false
          style: form
          explode: true
          schema:
            type: string
        - name: all_fields
          in: query
          description: Include all complex attributes in the response.
          required: false
          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 011
          required: false
          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 011
          required: false
          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.
          required: false
          style: form
          explode: true
          schema:
            type: string
      responses:
        '200':
          description:
            Contains in an array the representations of zero or more application
            mobility services.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RegistrationInfo'
                x-content-type: application/json
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
    post:
      tags:
        - amsi
      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: []
      requestBody:
        description: Application mobility service to be created
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistrationInfo'
        required: true
      responses:
        '201':
          description: Successful response for application mobility service creation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationInfo'
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
  /app_mobility_services/{appMobilityServiceId}:
    get:
      tags:
        - amsi
      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
          explode: false
          schema:
            type: string
      responses:
        '200':
          description: Contains a representation of the application mobility service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationInfo'
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
    put:
      tags:
        - amsi
      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
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegistrationInfo'
        required: true
      responses:
        '200':
          description:
            Contains a data type describing the updated application mobility
            service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegistrationInfo'
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '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'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
    delete:
      tags:
        - amsi
      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
          explode: false
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
  /app_mobility_services/{appMobilityServiceId}/deregister_task:
    post:
      tags:
        - unsupported
      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
          explode: false
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
  /subscriptions:
    get:
      tags:
        - amsi
      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
          description:
            'Query parameter to filter on a specific subscription type. Permitted
            values: mobility_proc or adj_app_info'
          required: true
          style: form
          explode: true
          schema:
            type: string
      responses:
        '200':
          description: Contains  the list of links to requestor subscriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionLinkList'
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
    post:
      tags:
        - amsi
      summary: Create a new subscription to Application Mobility Service notifications.
      description: Create a new subscription to Application Mobility Service notifications.
      operationId: subPOST
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/body'
        required: true
      responses:
        '201':
          description:
            Created subscription is described using the appropriate data
            type
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/body'
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '415':
          description:
            'Unsupported Media Type :  used to indicate that the server
            or the client does not support the content type of the entity body.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      callbacks:
        notification:
          '{$request.body#/callbackReference}':
            post:
              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:
                content:
                  application/json:
                    schema:
                      oneOf:
                        - $ref: '#/components/schemas/MobilityProcedureNotification'
                        - $ref: '#/components/schemas/AdjacentAppInfoNotification'
                        - $ref: '#/components/schemas/ExpiryNotification'
              responses:
                '204':
                  description:
                    The notification was delivered successfully. The response
                    body shall be empty.
                  content: {}
                '401':
                  description: It is used when the client did not submit credentials.'
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/ProblemDetails'
                '403':
                  description:
                    operation is not allowed given the current status of
                    the resource.'
                  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.'
                  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.'
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/ProblemDetails'
                '429':
                  description: Used when a rate limiter has triggered.'
                  content:
                    application/json:
                      schema:
                        $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
  /subscriptions/{subscriptionId}:
    get:
      tags:
        - amsi
      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
          explode: false
          schema:
            type: string
      responses:
        '200':
          description:
            A response body containing data type describing the specific
            RNI event subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/body'
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
    put:
      tags:
        - amsi
      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
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/body_1'
        required: true
      responses:
        '200':
          description:
            a response body containing data type describing the updated
            subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/body_1'
        '400':
          description:
            'Bad Request : used to indicate that incorrect parameters were
            passed to the request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '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'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
    delete:
      tags:
        - amsi
      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
          explode: false
          schema:
            type: string
      responses:
        '204':
          description: No Content
          content: {}
        '401':
          description: 'Unauthorized :  used when the client did not submit credentials.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description:
            'Forbidden :  operation is not allowed given the current status
            of the resource.'
          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.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          description: 'Too Many Requests : used when a rate limiter has triggered.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
      deprecated: false
components:
  schemas:
    AdjacentAppInfoSubscription.links:
      title: AdjacentAppInfoSubscription.links
      required:
        - self
      type: object
      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.
    AdjacentAppInfoSubscription.filterCriteria:
      title: AdjacentAppInfoSubscription.filterCriteria
      type: object
      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.
    AdjacentAppInfoSubscription:
      title: AdjacentAppInfoSubscription
      required:
        - callbackReference
        - filterCriteria
        - subscriptionType
      type: object
      properties:
        _links:
          $ref: '#/components/schemas/AdjacentAppInfoSubscription.links'
        callbackReference:
          type: string
          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.
          format: uri
        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:
          $ref: '#/components/schemas/TimeStamp'
        filterCriteria:
          $ref: '#/components/schemas/AdjacentAppInfoSubscription.filterCriteria'
        subscriptionType:
          type: string
          description: Shall be set to "AdjacentAppInfoSubscription".
          example: '["AdjacentAppInfoSubscription"]'
    AdjacentAppInstanceInfo:
      title: AdjacentAppInstanceInfo
      required:
        - appDId
        - appInstanceCommLink
        - appInstanceId
      type: object
      properties:
        appDId:
          type: string
          description: Identifier of the application descriptor.
        appInstanceCommLink:
          type: array
          description: It specifies the communication interface of application instance.
          items:
            $ref: '#/components/schemas/CommunicationInterface'
        appInstanceId:
          type: string
          description: Identifier of the application instance.
        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".
      example:
        appInstanceId: appInstanceId
        registeredInstanceId: registeredInstanceId
        appInstanceCommLink:
          - ipAddresses:
              - port: 0
                host: host
              - port: 0
                host: host
          - ipAddresses:
              - port: 0
                host: host
              - port: 0
                host: host
        appDId: appDId
        mecHostInformation:
          hostName: hostName
          hostId:
            key: {}
    AppMobilityServiceLevel:
      title: AppMobilityServiceLevel
      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.
      example: '["APP_MOBILITY_NOT_ALLOWED"]'
      enum:
        - APP_MOBILITY_NOT_ALLOWED
        - APP_MOBILITY_WITH_CONFIRMATION
        - APP_MOBILITY_WITHOUT_CONFIRMATION
    CommunicationInterface.IpAddresses:
      title: CommunicationInterface.IpAddresses
      required:
        - host
        - port
      type: object
      properties:
        host:
          type: string
        port:
          type: integer
      example:
        port: 0
        host: host
    CommunicationInterface:
      title: CommunicationInterface
      type: object
      properties:
        ipAddresses:
          type: array
          items:
            $ref: '#/components/schemas/CommunicationInterface.IpAddresses'
      example:
        ipAddresses:
          - port: 0
            host: host
          - port: 0
            host: host
    MobilityProcedureSubscription.links:
      title: MobilityProcedureSubscription.links
      required:
        - self
      type: object
      properties:
        self:
          $ref: '#/components/schemas/LinkType'
    MobilityProcedureSubscription.filterCriteria:
      title: MobilityProcedureSubscription.filterCriteria
      type: object
      properties:
        appInstanceId:
          type: string
          description:
            Identifier of the application instance that registers the Application
            Mobility Service.
        associateId:
          type: array
          description:
            0 to N identifiers to associate the information for specific
            UE(s) and flow(s).
          items:
            $ref: '#/components/schemas/AssociateId'
        mobilityStatus:
          type: array
          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.
          items:
            $ref: '#/components/schemas/MobilityStatus'
      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:
          type: string
          description:
            Set by AMS to indicate to the service consumer the Websocket
            URI to be used for delivering notifications.
          format: uri
        requestWebsocketUri:
          type: boolean
          description:
            Set to true by the service consumer to indicate that Websocket
            delivery is requested.
    MobilityProcedureSubscription:
      title: MobilityProcedureSubscription
      required:
        - filterCriteria
        - subscriptionType
      type: object
      properties:
        _links:
          $ref: '#/components/schemas/MobilityProcedureSubscription.links'
        callbackReference:
          type: string
          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.
          format: uri
        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:
          $ref: '#/components/schemas/TimeStamp'
        filterCriteria:
          $ref: '#/components/schemas/MobilityProcedureSubscription.filterCriteria'
        subscriptionType:
          type: string
          description: Shall be set to "MobilityProcedureSubscription".
          example: '["MobilityProcedureSubscription"]'
    MobilityProcedureNotification:
      title: MobilityProcedureNotification
      required:
        - associateId
        - links
        - mobilityStatus
        - notificationType
      properties:
        notificationType:
          type: string
          description: Shall be set to "MobilityProcedureNotification".
        timeStamp:
          $ref: '#/components/schemas/TimeStamp'
        associateId:
          type: array
          description: 1 to N identifiers to associate the information for specific
          items:
            $ref: '#/components/schemas/AssociateId'
        mobilityStatus:
          $ref: '#/components/schemas/MobilityStatus'
        targetAppInfo:
          $ref: '#/components/schemas/MobilityProcedureNotification_targetAppInfo'
        _links:
          $ref: '#/components/schemas/MobilityProcedureNotification__links'
    AdjacentAppInfoNotification:
      title: AdjacentAppInfoNotification
      required:
        - _links
        - notificationType
      properties:
        notificationType:
          type: string
          description: Shall be set to "AdjacentAppInfoNotification".
        timeStamp:
          $ref: '#/components/schemas/TimeStamp'
        associateId:
          type: array
          description: 1 to N identifiers to associate the information for specific
          items:
            $ref: '#/components/schemas/AssociateId'
        adjacentAppInfo:
          required:
            - appInstanceId
            - commInterface
          type: array
          items:
            $ref: '#/components/schemas/AdjacentAppInfoNotificationAdjacentAppInfo'
        _links:
          $ref: '#/components/schemas/MobilityProcedureNotification__links'
    AdjacentAppInfoNotificationAdjacentAppInfo:
      required:
        - appInstanceId
      type: object
      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'
    ExpiryNotification:
      title: ExpiryNotification
      required:
        - _links
        - expiryDeadline
        - notificationType
      properties:
        notificationType:
          type: string
          description: Shall be set to "ExpiryNotification".
        timeStamp:
          $ref: '#/components/schemas/TimeStamp'
        _links:
          $ref: '#/components/schemas/MobilityProcedureNotification__links'
        expiryDeadline:
          $ref: '#/components/schemas/TimeStamp'
    TestNotification:
      title: TestNotification
      required:
        - _links
        - notificationType
      properties:
        notificationType:
          type: string
          description: Shall be set to "TestNotification".
        _links:
          $ref: '#/components/schemas/TestNotification__links'
    MobilityStatus:
      title: MobilityStatus
      type: string
      description: Indicate the status of the UE mobility
      example: '["INTERHOST_MOVEOUT_TRIGGERED"]'
      enum:
        - INTERHOST_MOVEOUT_TRIGGERED
        - INTERHOST_MOVEOUT_COMPLETED
        - INTERHOST_MOVEOUT_FAILED
    RegistrationInfo.deviceInformation:
      title: RegistrationInfo.deviceInformation
      required:
        - associateId
      type: object
      properties:
        associateId:
          $ref: '#/components/schemas/AssociateId'
        appMobilityServiceLevel:
          $ref: '#/components/schemas/AppMobilityServiceLevel'
        contextTransferState:
          $ref: '#/components/schemas/contextTransferState'
      example:
        associateId:
          type: '["UE_IPv4_ADDRESS"]'
          value: value
        appMobilityServiceLevel: '["APP_MOBILITY_NOT_ALLOWED"]'
        contextTransferState: '["NOT_TRANSFERRED"]'
    RegistrationInfo.serviceConsumerId:
      title: RegistrationInfo.serviceConsumerId
      type: object
      properties:
        appInstanceId:
          type: string
          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:
        The identifier of service consumer requesting the application mobility
        service, i.e. either the application instance ID or the MEC platform ID.
      example:
        appInstanceId: appInstanceId
        mepId: mepId
    RegistrationInfo:
      title: RegistrationInfo
      required:
        - serviceConsumerId
      type: object
      properties:
        appMobilityServiceId:
          type: string
          description:
            The identifier of registered application mobility service.
            Shall be absent in POST requests, and present otherwise.
        deviceInformation:
          type: array
          description:
            If present, it specifies the device served by the application
            instance which is registering is registering the Application Mobility
            Service.
          items:
            $ref: '#/components/schemas/RegistrationInfo.deviceInformation'
        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.
        serviceConsumerId:
          $ref: '#/components/schemas/RegistrationInfo.serviceConsumerId'
      example:
        appMobilityServiceId: appMobilityServiceId
        deviceInformation:
          - associateId:
              type: '["UE_IPv4_ADDRESS"]'
              value: value
            appMobilityServiceLevel: '["APP_MOBILITY_NOT_ALLOWED"]'
            contextTransferState: '["NOT_TRANSFERRED"]'
          - associateId:
              type: '["UE_IPv4_ADDRESS"]'
              value: value
            appMobilityServiceLevel: '["APP_MOBILITY_NOT_ALLOWED"]'
            contextTransferState: '["NOT_TRANSFERRED"]'
        expiryTime: 0
        serviceConsumerId:
          appInstanceId: appInstanceId
          mepId: mepId
    SubscriptionLinkList.links:
      title: SubscriptionLinkList.links
      required:
        - self
      type: object
      properties:
        self:
          $ref: '#/components/schemas/LinkType'
        subscription:
          type: array
          description: The service consumer’s subscriptions.
          items:
            $ref: '#/components/schemas/SubscriptionLinkList.subscription'
      description: List of hyperlinks related to the resource.
      example:
        self:
          href: href
        subscription:
          - subscriptionType: 0
            href: href
          - subscriptionType: 0
            href: href
    SubscriptionLinkList.subscription:
      title: SubscriptionLinkList.subscription
      required:
        - href
        - subscriptionType
      type: object
      properties:
        href:
          type: string
          description: The URI referring to the subscription.
        subscriptionType:
          $ref: '#/components/schemas/subscriptionType'
      example:
        subscriptionType: 0
        href: href
    SubscriptionLinkList:
      title: SubscriptionLinkList
      required:
        - _links
      type: object
      properties:
        _links:
          $ref: '#/components/schemas/SubscriptionLinkList.links'
      example:
        _links:
          self:
            href: href
          subscription:
            - subscriptionType: 0
              href: href
            - subscriptionType: 0
              href: href
    contextTransferState:
      title: contextTransferState
      type: string
      description:
        If present, it represents the state of transferring the user context
        to another application instance.
      example: '["NOT_TRANSFERRED"]'
      enum:
        - NOT_TRANSFERRED
        - USER_CONTEXT_TRANSFER_COMPLETED
    subscriptionType:
      title: subscriptionType
      type: integer
      description:
        'Numeric value (0 - 255) corresponding to specified type of subscription
        as following: 0 = RESERVED. 1 = MOBILITY_PROCEDURE. 2 = ADJACENT_APPINFO.'
      enum:
        - 0
        - 1
        - 2
    AssociateId:
      title: AssociateId
      required:
        - type
        - value
      type: object
      properties:
        type:
          $ref: '#/components/schemas/Type'
        value:
          type: string
          description: Value for the identifier.
      example:
        type: '["UE_IPv4_ADDRESS"]'
        value: value
    LinkType:
      title: LinkType
      required:
        - href
      type: object
      properties:
        href:
          type: string
          description: The URI referring to the subscription.
      description: "'This data type represents a type of link'"
      example:
        href: href
    TimeStamp:
      title: TimeStamp
      required:
        - nanoSeconds
        - seconds
      type: object
      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.'"
        nanoSeconds:
          type: integer
          description:
            "'The nanoseconds part of the Time. Time is defined as Unix-time
            since January 1, 1970, 00:00:00 UTC.'"
      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
      x-schema-name: KeyValuePairs
    MECHostInformation:
      title: MECHostInformation
      required:
        - hostId
      type: object
      properties:
        hostName:
          type: string
          description: Human-readable name of MEC host.
        hostId:
          $ref: '#/components/schemas/KeyValuePairs'
      example:
        hostName: hostName
        hostId:
          key: {}
    ProblemDetails:
      title: ProblemDetails
      type: object
      properties:
        detail:
          type: string
          description:
            A human-readable explanation specific to this occurrence of
            the problem
        instance:
          type: string
          description:
            A URI reference that identifies the specific occurrence of
            the problem
        status:
          type: integer
          description: The HTTP status code for this occurrence of the problem
        title:
          type: string
          description: A short, human-readable summary of the problem type
        type:
          type: string
          description:
            A URI reference according to IETF RFC 3986 that identifies
            the problem type
    Type:
      title: Type
      type: string
      description: Numeric value (0-255) corresponding to specified type of identifier
      example: '["UE_IPv4_ADDRESS"]'
      enum:
        - UE_IPv4_ADDRESS
        - UE_IPV6_ADDRESS
        - NATED_IP_ADDRESS
        - GTP_TEID
    body:
      oneOf:
        - $ref: '#/components/schemas/MobilityProcedureSubscription'
        - $ref: '#/components/schemas/AdjacentAppInfoSubscription'
    body_1:
      oneOf:
        - $ref: '#/components/schemas/MobilityProcedureSubscription'
        - $ref: '#/components/schemas/AdjacentAppInfoSubscription'
    MobilityProcedureNotification_targetAppInfo:
      required:
        - appInstanceId
      type: object
      properties:
        appInstanceId:
          type: string
          description: Identifiers of the target application instance.
        commInterface:
          $ref: '#/components/schemas/CommunicationInterface'
    MobilityProcedureNotification__links:
      required:
        - subscription
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/LinkType'
      description: Object containing hyperlinks related to the resource.
    TestNotification__links:
      required:
        - subscription
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/LinkType'
      description: Hyperlink related to the resource.
