MecAppSupportApi.yaml 45.7 KB
Newer Older
openapi: 3.0.2
servers:
  - url: 'http://127.0.0.1:8081/mec_app_support/v1'
  - url: 'https://127.0.0.1:8081/mec_app_support/v1'
info:
  title: MEC Application Support API
kharimza's avatar
kharimza committed
  version: 2.0.11
  description: The ETSI MEC ISG MEC011 MEC Application Support API described using OpenAPI
  license:
    name: ETSI Forge copyright notice
    url: 'https://forge.etsi.org/etsi-forge-copyright-notice.txt'
  contact:
    email: cti_support@etsi.org
externalDocs:
  description: 'ETSI GS MEC011 Application Enablement API, V2.0.9'
  url: >-
    https://docbox.etsi.org/ISG/MEC/70-Draft/0011v211Plat.App.Enabl/MEC-0011v211Plat.App.Enablv209.zip
tags:
  - name: appTrafficRules
  - name: appDnsRules
  - name: appSubscriptions
  - name: appConfirmTermination
  - name: timing
  - name: callbacks
paths:
  '/applications/{appInstanceId}/traffic_rules':
    parameters:
      - $ref: '#/components/parameters/Path.AppInstanceId'
    get:
      description: >-
        This method retrieves information about all the traffic rules associated
        with a MEC application instance.
      operationId: ApplicationsTrafficRules_GET
      tags:
        - appTrafficRules
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsTrafficRules.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
  '/applications/{appInstanceId}/traffic_rules/{trafficRuleId}':
    parameters:
      - $ref: '#/components/parameters/Path.AppInstanceId'
      - $ref: '#/components/parameters/Path.TrafficRuleId'
    get:
      description: >-
        This method retrieves information about all the traffic rules associated
        with a MEC application instance.
      operationId: ApplicationsTrafficRule_GET
      tags:
        - appTrafficRules
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsTrafficRule.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
    put:
      description: >-
        This method retrieves information about all the traffic rules associated
        with a MEC application instance.
      operationId: ApplicationsTrafficRule_PUT
      tags:
        - appTrafficRules
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsTrafficRule.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
        '412':
          $ref: '#/components/responses/Error.412'
      requestBody:
        $ref: '#/components/requestBodies/ApplicationsTrafficRule'
  '/applications/{appInstanceId}/dns_rules':
    parameters:
      - $ref: '#/components/parameters/Path.AppInstanceId'
    get:
      description: >-
        This method retrieves information about all the DNS rules associated
        with a MEC application instance.
      operationId: ApplicationsDnsRules_GET
      tags:
        - appDnsRules
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsDnsRules.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
  '/applications/{appInstanceId}/dns_rules/{dnsRuleId}':
    parameters:
      - $ref: '#/components/parameters/Path.AppInstanceId'
      - $ref: '#/components/parameters/Path.DnsRuleId'
    get:
      description: >-
        This method retrieves information about a DNS rule associated with a
        MEC application instance.
      operationId: ApplicationsDnsRule_GET
      tags:
        - appDnsRules
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsDnsRule.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
    put:
      description: 'This method activates, de-activates or updates a traffic rule.'
      operationId: ApplicationsDnsRule_PUT
      tags:
        - appDnsRules
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsDnsRule.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
        '412':
          $ref: '#/components/responses/Error.412'
      requestBody:
          $ref: '#/components/requestBodies/ApplicationsDnsRule'
  '/applications/{appInstanceId}/subscriptions':
    parameters:
      - $ref: '#/components/parameters/Path.AppInstanceId'
    get:
      description: >-
        The GET method may be used to request information about all
        subscriptions for this requestor. Upon success, the response contains
        entity body with all the subscriptions for the requestor.
      operationId: ApplicationsSubscriptions_GET
      tags:
        - appSubscriptions
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsSubscriptions.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
    post:
      description: >-
        The POST method may be used to create a new subscription. One example
        use case is to create a new subscription to the MEC service
        availability notifications. Upon success, the response contains entity
        body describing the created subscription.
      operationId: ApplicationsSubscriptions_POST
      tags:
        - appSubscriptions
      responses:
        '201':
          $ref: '#/components/responses/ApplicationsSubscriptions.201'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
      requestBody:
        $ref: '#/components/requestBodies/ApplicationsSubscriptions'
      callbacks:
        appTerminationNotification:
          $ref: '#/components/callbacks/AppTerminationNotification'
  '/applications/{appInstanceId}/subscriptions/{subscriptionId}':
    parameters:
      - $ref: '#/components/parameters/Path.AppInstanceId'
      - $ref: '#/components/parameters/Path.SubscriptionId'
    get:
      description: >-
        The GET method requests information about a subscription for this
        requestor. Upon success, the response contains entity body with the
        subscription for the requestor.
      operationId: ApplicationsSubscription_GET
      tags:
        - appSubscriptions
      responses:
        '200':
          $ref: '#/components/responses/ApplicationsSubscription.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
    delete:
      description: >-
        This method deletes a mecAppSuptApiSubscription. This method is typically used
        in "Unsubscribing from service availability event notifications"
        procedure.
      operationId: ApplicationsSubscription_DELETE
      tags:
        - appSubscriptions
      responses:
        '204':
          description: No Content
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
  '/applications/{appInstanceId}/confirm_termination':
    parameters:
      - $ref: '#/components/parameters/Path.AppInstanceId'
    post:
      description: >-
        This method is used to confirm the application level termination 
        of an application instance.
      operationId: ApplicationsConfirmTermination_POST
      tags:
        - appConfirmTermination
      responses:
        '204':
          description: No Content
kharimza's avatar
kharimza committed
        '400':
          $ref: '#/components/responses/Error.400'
        '401':
          $ref: '#/components/responses/Error.401'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
        '409':
          $ref: '#/components/responses/Error.409'
        '429':
          $ref: '#/components/responses/Error.429'
kharimza's avatar
kharimza committed
      requestBody:
        $ref: '#/components/requestBodies/ApplicationsConfirmTermination'
  '/timing/timing_caps':
    get:
      description: >-
        This method retrieves the information of the platform's timing
        capabilities which corresponds to the timing capabilities query
      operationId: TimingCaps_GET
      tags:
        - timing
      responses:
        '200':
          $ref: '#/components/responses/TimingCaps.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
  '/timing/current_time':
    get:
      description: >-
        This method retrieves the information of the platform's current time
        which corresponds to the get platform time procedure
      operationId: TimingCurrentTime_GET
      tags:
        - timing
      responses:
        '200':
          $ref: '#/components/responses/TimingCurrentTime.200'
        '400':
          $ref: '#/components/responses/Error.400'
        '403':
          $ref: '#/components/responses/Error.403'
        '404':
          $ref: '#/components/responses/Error.404'
components:
  schemas:
    Empty:
      description: Empty schema
kharimza's avatar
kharimza committed
    AppTerminationConfirmation:
      description: >-
        This type represents the information that the MEC application instance provides to the MEC platform when informing it that the application has completed its application level related terminate/stop actions, e.g. retention of application state in the case of stop.
      type: object
      required:
        - operationAction
      properties:
        operationAction:
          $ref: '#/components/schemas/OperationActionType'
    AppTerminationNotification.Links:
      description: >-
        Object containing hyperlinks related to the resource.
      type: object
      required:
        - subscription
      properties:
        subscription:
          $ref: '#/components/schemas/LinkType'
        confirmTermination:
          $ref: '#/components/schemas/LinkType.ConfirmTermination'
    AppTerminationNotification.MaxGracefulTimeout:
      description: >-
        Maximum timeout value in seconds for graceful termination or graceful
        stop of an application instance.
      type: integer
      format: uint32
      example: 10
    AppTerminationNotification.NotificationType:
      description: Shall be set to AppTerminationNotification.
      type: string
      example: 'AppTerminationNotification'
    AppTerminationNotification:
      description: >-
        This type represents the information that the MEC platform
        notifies the subscribed application instance about  the corresponding
        application instance termination/stop.
      type: object
      required:
        - notificationType
kharimza's avatar
kharimza committed
        - operationAction
        - maxGracefulTimeout
        - _links
      properties:
        notificationType:
          $ref: '#/components/schemas/AppTerminationNotification.NotificationType'
kharimza's avatar
kharimza committed
        operationAction:
          $ref: '#/components/schemas/OperationActionType'
        maxGracefulTimeout:
          $ref: '#/components/schemas/AppTerminationNotification.MaxGracefulTimeout'
        _links:
          $ref: '#/components/schemas/AppTerminationNotification.Links'
    AppTerminationNotificationSubscription.AppInstanceId:
      description: It is used as the filtering criterion for the subscribed events.
      type: string
      example: 'ID1'
    AppTerminationNotificationSubscription.CallbackReference:
      description: >-
        URI selected by the MEC application instance to receive
        notifications on the subscribed MEC application instance
        management information. This shall be included in both the request and
        the response.
      type: string
      format: uri
    AppTerminationNotificationSubscription:
      description: >-
        This type represents the information that the MEC platform
        notifies the subscribed application instance about  the corresponding
        application instance termination/stop.
      type: object
      required:
        - subscriptionType
        - callbackReference
        - _links
        - appInstanceId
      properties:
        subscriptionType:
          $ref: >-
            #/components/schemas/AppTerminationNotificationSubscription.SubscriptionType
        callbackReference:
          $ref: >-
            #/components/schemas/AppTerminationNotificationSubscription.CallbackReference
        _links:
          $ref: '#/components/schemas/Self'
        appInstanceId:
          $ref: >-
            #/components/schemas/AppTerminationNotificationSubscription.AppInstanceId
    AppTerminationNotificationSubscription.SubscriptionType:
      description: Shall be set to AppTerminationNotificationSubscription.
      type: string
      example: 'AppTerminationNotificationSubscription'
    CurrentTime:
      description: >-
        This type represents the information provided by the MEC
        platform in response to the Get Platform Time Request message.
      type: object
      required:
        - nanoSeconds
        - seconds
        - timeSourceStatus
      properties:
        seconds:
          type: integer
          format: uint32
          description: >-
            The seconds part of the time. Time is defined as Unix-time since
            January 1, 1970, 00:00:00 UTC
          example: 1577836800
        nanoSeconds:
          type: integer
          format: uint32
          description: >-
            The nanoseconds part of the time. Time is defined as Unix-time since
            January 1, 1970, 00:00:00 UTC
          example: 0
        timeSourceStatus:
          type: string
          enum:
            - TRACEABLE
            - NONTRACEABLE
          description: >-
            Platform Time Source status. 1 = TRACEABLE - time source is locked
            to the UTC time source. 2 = NONTRACEABLE - time source is not locked
            to the UTC time source
          example: 'TRACEABLE'
    DestinationInterface.InterfaceType:
      description: Type of the interface
      type: string
      enum:
        - TUNNEL
        - MAC
        - IP
      example: 'TUNNEL'
    DestinationInterface.IpAddress:
      description: IP address of the remote destination
      type: string
      example: '192.0.2.0'
    DestinationInterface.MacAddress:
      description: Source address identifies the MAC address of the interface
      type: string
      example: '02-00-00-00-00-00'
    DestinationInterface:
      description: This type represents the destination interface.
      type: object
      required:
        - interfaceType
      properties:
        interfaceType:
          $ref: '#/components/schemas/DestinationInterface.InterfaceType'
        tunnelInfo:
          $ref: '#/components/schemas/TunnelInfo'
        srcMacAddress:
          $ref: '#/components/schemas/DestinationInterface.MacAddress'
        dstMacAddress:
          $ref: '#/components/schemas/DestinationInterface.MacAddress'
        dstIpAddress:
          $ref: '#/components/schemas/DestinationInterface.IpAddress'
    DnsRule.DomainName:
      description: FQDN resolved by the DNS rule
      type: string
      example: 'www.example.com'
    DnsRule.Id:
      description: Identifies the DNS Rule
      type: string
      example: 'dnsRule1'
    DnsRule.IpAddress:
      description: IP address associated with the FQDN resolved by the DNS rule
      type: string
      example: '192.0.2.0'
    DnsRule.IpAddressType:
      description: IP address type
      type: string
      enum:
        - IP_V6
        - IP_V4
      example: 'IP_V6'
    DnsRule.State:
      description: DNS rule state
      type: string
      enum:
        - ACTIVE
        - INACTIVE
      example: 'ACTIVE'
    DnsRule.Ttl:
      description: Time to live value
      type: integer
      format: uint32
      example: '?'
    DnsRule:
      description: This type represents the general information of a DNS rule.
      type: object
      required:
        - dnsRuleId
        - domainName
        - ipAddressType
        - ipAddress
        - state
      properties:
        dnsRuleId:
          $ref: '#/components/schemas/DnsRule.Id'
        domainName:
          $ref: '#/components/schemas/DnsRule.DomainName'
        ipAddressType:
          $ref: '#/components/schemas/DnsRule.IpAddressType'
        ipAddress:
          $ref: '#/components/schemas/DnsRule.IpAddress'
        ttl:
          $ref: '#/components/schemas/DnsRule.Ttl'
        state:
          $ref: '#/components/schemas/DnsRule.State'
    LinkType:
      description: This type represents a type of link and may be referenced from data structures
      type: object
      properties:
        href: 
          $ref: '#/components/schemas/Href'
    LinkType.ConfirmTermination:
      description: >-
        Link to the task resource where to confirm termination in case the 
        application is ready to be terminated before expiry of the timeout.
      type: object
      properties:
        href: 
          $ref: '#/components/schemas/Href'
    Href:
      description: URI referring to a resource
      type: string
      format: uri
      example: '/mecAppSuptApi/example'
    MecAppSuptApiSubscriptionLinkList.Links:
      description: Self-referring URI.
      type: object
      required:
        - self
      properties:
        self:
          $ref: '#/components/schemas/LinkType'
        subscriptions:
          description: The MEC application instance's subscriptions
          type: array
          items:
            $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList.Subscription'
    MecAppSuptApiSubscriptionLinkList.Subscription:
      description: A link to a subscription.
      type: object
      required:
        - href
        - rel
      properties:
        href:
          $ref: '#/components/schemas/Href'
        rel:
          description: >-
            The values shall be set to AppTerminationNotificationSubscription.
          type: string
    MecAppSuptApiSubscriptionLinkList:
      description: >-
        This type represents a list of links related to currently existing
        subscriptions for a MEC application instance. This information
        is returned when sending a request to receive current subscriptions.
      type: object
      required:
        - _links
      properties:
        _links:
          $ref: '#/components/schemas/MecAppSuptApiSubscriptionLinkList.Links'
kharimza's avatar
kharimza committed
    OperationActionType:
      description: Operation that is being performed on the MEC application instance.
      type: string
      enum:
        - STOPPING
        - TERMINATING
      example: 'TERMINATING'
    ProblemDetails:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/Problem.type'
        title:
          $ref: '#/components/schemas/Problem.title'
        status:
          $ref: '#/components/schemas/Problem.status'
        detail:
          $ref: '#/components/schemas/Problem.detail'
        instance:
          $ref: '#/components/schemas/Problem.instance'
    Problem.detail:
      type: string
      description: A human-readable explanation specific to this occurrence of the problem
    Problem.instance:
      type: string
      format: uri
      description: A URI reference that identifies the specific occurrence of the problem
    Problem.status:
      type: integer
      format: uint32
      description: The HTTP status code for this occurrence of the problem
    Problem.title:
      type: string
      description: 'A short, human-readable summary of the problem type'
    Problem.type:
      type: string
      format: uri
      description: >-
        A URI reference according to IETF RFC 3986 that identifies the problem
        type
    Self:
      description: Self-referring URI.
      type: object
      required:
        - self
      properties:
        self:
          $ref: '#/components/schemas/LinkType'
      readOnly: true
    TimingCaps.NtpServers.AuthenticationKeyNum:
      description: Authentication key number
      type: integer
      format: uint32
      example: 1
    TimingCaps.NtpServers.AuthenticationOption:
      description: NTP authentication option
      type: string
      enum:
        - NONE
        - SYMMETRIC_KEY
        - AUTO_KEY
      example: 'NONE'
    TimingCaps.NtpServers.DelayReqMaxRate:
      description: Acceptable maximum rate of the Delay_Req messages in packets per second
      type: integer
      format: uint32
      example: 10
    TimingCaps.NtpServers.LocalPriority:
      description: NTP server local priority
      type: integer
      format: uint32
      example: 1
    TimingCaps.NtpServers.MaxPollingInterval:
      description: >-
        Maximum poll interval for NTP messages, in seconds as a power of two.
        Range 3...17
      type: integer
      format: uint32
      example: 17
    TimingCaps.NtpServers.MinPollingInterval:
      description: >-
        Minimum poll interval for NTP messages, in seconds as a power of two.
        Range 3...17
      type: integer
      format: uint32
      example: 3
    TimingCaps.NtpServers.NtpServerAddr:
      description: NTP server address
      type: string
      example: '192.0.2.0'
    TimingCaps.NtpServers.NtpServerAddrType:
      description: Address type of NTP server
      type: string
      enum:
        - IP_ADDRESS
        - DNS_NAME
      example: 'IP_ADDRESS'
    TimingCaps.NtpServers_PtpMasterIpAddress:
      description: PTP Master IP Address
      type: string
      example: '192.0.2.0'
    TimingCaps.NtpServers_PtpMasterLocalPriority:
      description: PTP Master local priority
      type: integer
      format: uint32
      example: 1
    TimingCaps.NtpServers:
      description: NTP server detail.
      type: object
      required:
        - ntpServerAddrType
        - ntpServerAddr
        - minPollingInterval
        - maxPollingInterval
        - localPriority
        - authenticationOption
        - authenticationKeyNum
      properties:
        ntpServerAddrType:
          $ref: '#/components/schemas/TimingCaps.NtpServers.NtpServerAddrType'
        ntpServerAddr:
          $ref: '#/components/schemas/TimingCaps.NtpServers.NtpServerAddr'
        minPollingInterval:
          $ref: '#/components/schemas/TimingCaps.NtpServers.MinPollingInterval'
        maxPollingInterval:
          $ref: '#/components/schemas/TimingCaps.NtpServers.MaxPollingInterval'
        localPriority:
          $ref: '#/components/schemas/TimingCaps.NtpServers.LocalPriority'
        authenticationOption:
          $ref: '#/components/schemas/TimingCaps.NtpServers.AuthenticationOption'
        authenticationKeyNum:
          $ref: '#/components/schemas/TimingCaps.NtpServers.AuthenticationKeyNum'
    TimingCaps_PtpMasters:
      description: NTP server detail.
      type: object
      required:
        - ptpMasterIpAddress
        - ptpMasterLocalPriority
        - delayReqMaxRate
      properties:
        ptpMasterIpAddress:
          $ref: '#/components/schemas/TimingCaps.NtpServers_PtpMasterIpAddress'
        ptpMasterLocalPriority:
          $ref: '#/components/schemas/TimingCaps.NtpServers_PtpMasterLocalPriority'
        delayReqMaxRate:
          $ref: '#/components/schemas/TimingCaps.NtpServers.DelayReqMaxRate'
    TimingCaps.TimeStamp:
      description: time
      type: object
      required:
        - nanoSeconds
        - seconds
      properties:
        seconds:
          type: integer
          format: uint32
          description: >-
            The seconds part of the time. Time is defined as Unix-time since
            January 1, 1970, 00:00:00 UTC
          example: 1577836800
        nanoSeconds:
          type: integer
          format: uint32
          description: >-
            The nanoseconds part of the time. Time is defined as Unix-time since
            January 1, 1970, 00:00:00 UTC
          example: 0
    TimingCaps:
      description: >-
        This type represents the information provided by the MEC
        platform in response to the Timing capabilities Query message.
      type: object
      properties:
        timeStamp:
          $ref: '#/components/schemas/TimingCaps.TimeStamp'
        ntpServers:
          description: Available NTP servers
          type: array
          items:
            $ref: '#/components/schemas/TimingCaps.NtpServers'
        ptpMasters:
          description: Available PTP Masters
          type: array
          items:
            $ref: '#/components/schemas/TimingCaps_PtpMasters'
    TrafficFilter.Address:
      description: Identify the traffic ip address.
      type: string
      example: '192.168.1.1'
    TrafficFilter.DSCP:
      description: >-
        Used to match all IPv4 packets that have the same Differentiated
        Services Code Point (DSCP)
      type: integer
      format: uint32
      example: 0
    TrafficFilter.Port:
      description: A port
      type: string
      example: '8080'
    TrafficFilter.Protocol:
      description: Protocol of the traffic filter
      type: string
      example: '?'
    TrafficFilter.QCI:
      description: >-
        Used to match all packets that have the same Quality Class Indicator
        (QCI).
      type: integer
      format: uint32
      example: 1
    TrafficFilter.TC:
      description: Used to match all IPv6 packets that have the same Traffic Class.
      type: integer
      format: uint32
      example: 1
    TrafficFilter.Token:
      description: Used for token based traffic rule
      type: string
      example: '?'
    TrafficFilter.TunnelAddress:
      description: Used for GTP tunnel based traffic rule
      type: string
      example: '?'
    TrafficFilter.TunnelPort:
      description: Used for GTP tunnel based traffic rule
      type: string
      example: '?'
    TrafficFilter:
      description: This type represents the traffic filter.
      type: object
      properties:
        srcAddress:
          description: >-
            An IP address or a range of IP address. For IPv4, the IP address
            could be an IP address plus mask, or an individual IP address, or a
            range of IP addresses. For IPv6, the IP address could be an IP
            prefix, or a range of IP prefixes.
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.Address'
        dstAddress:
          description: >-
            An IP address or a range of IP address. For IPv4, the IP address
            could be an IP address plus mask, or an individual IP address, or a
            range of IP addresses. For IPv6, the IP address could be an IP
            prefix, or a range of IP prefixes.
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.Address'
        srcPort:
          description: A port or a range of ports
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.Port'
        dstPort:
          description: A port or a range of ports
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.Port'
        protocol:
          description: Specify the protocol of the traffic filter
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.Protocol'
        token:
          description: Used for token based traffic rule
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.Token'
        srcTunnelAddress:
          description: Used for GTP tunnel based traffic rule
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.TunnelAddress'
        tgtTunnelAddress:
          description: Used for GTP tunnel based traffic rule
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.TunnelAddress'
        srcTunnelPort:
          description: Used for GTP tunnel based traffic rule
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.TunnelPort'
        dstTunnelPort:
          description: Used for GTP tunnel based traffic rule
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter.TunnelPort'
        qCI:
          $ref: '#/components/schemas/TrafficFilter.QCI'
        dSCP:
          $ref: '#/components/schemas/TrafficFilter.DSCP'
        tC:
          $ref: '#/components/schemas/TrafficFilter.TC'
    TrafficRule.Action:
      description: >-
        The action of the ME host data plane when a packet matches the
        trafficFilter
      type: string
      enum:
        - DROP
        - FORWARD_DECAPSULATED
kharimza's avatar
kharimza committed
        - FORWARD_ENCAPSULATED
        - PASSTHROUGH
        - DUPLICATE_DECAPSULATED
kharimza's avatar
kharimza committed
        - DUPLICATE_ENCAPSULATED
      example: 'DROP'
    TrafficRule.FilterType:
      description: >-
        Definition of filter per FLOW or PACKET. If flow the filter match
        UE->EPC packet and the reverse packet is handled in the same context
      type: string
      enum:
        - FLOW
        - PACKET
      example: FLOW
    TrafficRule.Id:
      description: Identify the traffic rule.
      type: string
      example: 'TrafficRule1'
    TrafficRule_Priority:
      description: >-
        Priority of this traffic rule. If traffic rule conflicts, the one with
        higher priority take precedence
      type: integer
      format: uint32
      example: 1
    TrafficRule.State:
      description: Contains the traffic rule state
      type: string
      enum:
        - ACTIVE
        - INACTIVE
      example: 'ACTIVE'
    TrafficRule:
      description: This type represents the general information of a traffic rule.
      type: object
      required:
        - trafficRuleId
        - filterType
        - priority
        - trafficFilter
        - action
        - state
      properties:
        trafficRuleId:
          $ref: '#/components/schemas/TrafficRule.Id'
        filterType:
          $ref: '#/components/schemas/TrafficRule.FilterType'
        priority:
          $ref: '#/components/schemas/TrafficRule_Priority'
        trafficFilter:
          type: array
          items:
            $ref: '#/components/schemas/TrafficFilter'
        action:
          $ref: '#/components/schemas/TrafficRule.Action'
        dstInterface:
          $ref: '#/components/schemas/DestinationInterface'
        state:
          $ref: '#/components/schemas/TrafficRule.State'
    TunnelInfo.TunnelDstAddress:
      description: Destination address of the tunnel
      type: string
      example: '?'
    TunnelInfo.TunnelSrcAddress:
      description: Source address of the tunnel
      type: string
      example: '?'
    TunnelInfo.TunnelType:
      description: This type represents the tunnel information.
      type: string
      enum:
        - GTP_U
        - GRE
      example: 'GTP_U'
    TunnelInfo:
      description: This type represents the tunnel information.
      type: object
      required:
        - tunnelType
      properties:
        tunnelType:
          $ref: '#/components/schemas/TunnelInfo.TunnelType'
        tunnelDstAddress:
          $ref: '#/components/schemas/TunnelInfo.TunnelDstAddress'
        tunnelSrcAddress:
          $ref: '#/components/schemas/TunnelInfo.TunnelSrcAddress'
  parameters:
    Path.AppInstanceId:
      name: appInstanceId
      description: >-
        Represents a MEC application instance. Note that the
        appInstanceId is allocated by the MEC platform manager.
      in: path
      required: true
      schema:
        type: string
    Path.DnsRuleId:
      name: dnsRuleId
      description: Represents a DNS rule.
      in: path
      required: true
      schema:
        type: string
    Path.SubscriptionId:
      name: subscriptionId
      description: >-
        Represents a subscription to the notifications from the MEC
        platform.
      in: path
      required: true
      schema:
        type: string
    Path.TrafficRuleId:
      name: trafficRuleId
      description: Represents a traffic rule.
      in: path
      required: true
      schema:
        type: string
  responses:
    ApplicationsDnsRules.200:
      description: >-
        It is used to indicate nonspecific success. The response body
        contains a representation of the resource.
      content:
        application/json:
          schema:
            type: array
            minItems: 0
            items:
              $ref: '#/components/schemas/DnsRule'
          examples:
            DnsRules:
              $ref: '#/components/examples/DnsRules'
      links:
        getIndividualMeDNSRule:
          $ref: '#/components/links/GetIndividualMeDNSRule'
        putIndividualMeDNSRule:
          $ref: '#/components/links/PutIndividualMeDNSRule'
    ApplicationsDnsRule.200:
      description: >-
        It is used to indicate nonspecific success. The response body
        contains a representation of the resource.
      content:
        application/json:
          schema: