openapi: 3.0.0

info:
  title: 3gpp-service-parameter
  version: 1.2.1
  description: |
    API for AF service paramter  
    © 2024, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).  
    All rights reserved.

externalDocs:
  description: >
    3GPP TS 29.522 V18.7.0; 5G System; Network Exposure Function Northbound APIs.
  url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/'

security:
  - {}
  - oAuth2ClientCredentials: []

servers:
  - url: '{apiRoot}/3gpp-service-parameter/v1'
    variables:
      apiRoot:
        default: https://example.com
        description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122.

paths:
  /{afId}/subscriptions:
    parameters:
      - name: afId
        in: path
        description: Identifier of the AF
        required: true
        schema:
          type: string
    get:
      summary: read all of the active subscriptions for the AF
      operationId: ReadAllSubscriptions
      tags:
        - Service Parameter Subscriptions
      parameters:
        - name: gpsis
          in: query
          description: The GPSI of the requested UE(s).
          required: false
          schema:
            type: array
            items:
              $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
            minItems: 1
        - name: ip-addrs
          in: query
          description: The IP address(es) of the requested UE(s).
          required: false
          schema:
            type: array
            items:
              $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr'
            minItems: 1
        - name: ip-domain
          in: query
          description: >
            The IPv4 address domain identifier. The attribute may only be provided
            if IPv4 address is included in the ip-addrs query parameter.
          required: false
          schema:
            type: string
        - name: mac-addrs
          in: query
          description: The MAC address(es) of the requested UE(s).
          required: false
          schema:
            type: array
            items:
              $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
            minItems: 1
      responses:
        '200':
          description: OK. 
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ServiceParameterData'
                minItems: 0
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '406':
          $ref: 'TS29122_CommonData.yaml#/components/responses/406'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    post:
      summary: Creates a new subscription resource 
      operationId: CreateAnSubscription
      tags:
        - Service Parameter Subscriptions
      requestBody:
        description: Request to create a new subscription resource
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceParameterData'
      responses:
        '201':
          description: Created (Successful creation of subscription)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceParameterData'
          headers:
            Location:
              description: Contains the URI of the newly created resource.
              required: true
              schema:
                type: string
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29122_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29122_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29122_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'
      callbacks:
        notificationDestination:
          '{$request.body#/notificationDestination}':
            post:
              requestBody:
                description: >
                  Notifications upon AF Service Parameter Authorization Update,
                  and/or AF subscribed event notification of the outcome related
                  to the invocation of service parameters provisioning.
                required: true
                content:
                  application/json:
                    schema:
                      type: array
                      items:
                        $ref: '#/components/schemas/AfNotification'
                      minItems: 1
              responses:
                '204':
                  description: Expected response to a successful callback processing without a body
                '307':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/307'
                '308':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/308'
                '400':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/400'
                '401':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/401'
                '403':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/403'
                '404':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/404'
                '411':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/411'
                '413':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/413'
                '415':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/415'
                '429':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/429'
                '500':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/500'
                '503':
                  $ref: 'TS29122_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29122_CommonData.yaml#/components/responses/default'

  /{afId}/subscriptions/{subscriptionId}:
    parameters:
      - name: afId
        in: path
        description: Identifier of the AF
        required: true
        schema:
          type: string
      - name: subscriptionId
        in: path
        description: Identifier of the subscription resource
        required: true
        schema:
          type: string
    get:
      summary: read an active subscriptions for the SCS/AS and the subscription Id
      operationId: ReadAnSubscription
      tags:
        - Individual Service Parameter Subscription
      responses:
        '200':
          description: OK (Successful get the active subscription)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceParameterData'
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '406':
          $ref: 'TS29122_CommonData.yaml#/components/responses/406'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    put:
      summary: Fully updates/replaces an existing subscription resource
      operationId: FullyUpdateAnSubscription
      tags:
        - Individual Service Parameter Subscription
      requestBody:
        description: Parameters to update/replace the existing subscription
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceParameterData'
      responses:
        '200':
          description: OK (Successful update of the subscription)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceParameterData'
        '204':
          description: OK (Successful update of the subscription)
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29122_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29122_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29122_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    patch:
      summary: Partial updates/replaces an existing subscription resource
      operationId: PartialUpdateAnSubscription
      tags:
        - Individual Service Parameter Subscription
      requestBody:
        required: true
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/ServiceParameterDataPatch'
      responses:
        '200':
          description: OK. The subscription was modified successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceParameterData'
        '204':
          description: OK. The subscription was modified successfully.
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29122_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29122_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29122_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

    delete:
      summary: Deletes an already existing subscription
      operationId: DeleteAnSubscription
      tags:
        - Individual Service Parameter Subscription
      responses:
        '204':
          description: No Content (Successful deletion of the existing subscription)
        '307':
          $ref: 'TS29122_CommonData.yaml#/components/responses/307'
        '308':
          $ref: 'TS29122_CommonData.yaml#/components/responses/308'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'

components:
  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '{tokenUrl}'
          scopes: {}

  schemas: 
    ServiceParameterData:
      description: Represents an individual Service Parameter subscription resource.
      type: object
      properties:
        afServiceId:
          type: string
          description: Identifies a service on behalf of which the AF is issuing the request.
        appId:
          type: string
          description: Identifies an application.
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        snssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        externalGroupId:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId'
        anyUeInd:
          type: boolean
          description: >
            Identifies whether the AF request applies to any non-roaming UE. This attribute,
            when provided, shall set to "true" if applicable for any UE, otherwise, set to "false".
        roamUeNetDescs:
          type: array
          items:
            $ref: '#/components/schemas/NetworkDescription'
          minItems: 1
          description: Each element identifies one or more PLMN IDs of inbound roamers.
        gpsi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
        ueIpv4:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        ueIpv6:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
        ueMac:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
        self:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Link'
        subNotifEvents:
          type: array
          items:
            $ref: '#/components/schemas/Event'
          minItems: 1
          description: >
            Identifies the AF subscribed event(s) notifications related to AF provisioned
            service parameters.
        notificationDestination:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri'
        requestTestNotification:
          type: boolean
          description: >
            Set to true by the AF to request the NEF to send a test notification
            as defined in clause 5.2.5.3 of 3GPP TS 29.122. Set to false or omitted otherwise.
        websockNotifConfig:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig'
        paramOverPc5:
          $ref: '#/components/schemas/ParameterOverPc5'
        paramOverUu:
          $ref: '#/components/schemas/ParameterOverUu'
        paramForProSeDd:
          $ref: '#/components/schemas/ParamForProSeDd'
        paramForProSeDc:
          $ref: '#/components/schemas/ParamForProSeDc'
        paramForProSeU2NRelUe:
          $ref: '#/components/schemas/ParamForProSeU2NRelUe'
        paramForProSeRemUe:
          $ref: '#/components/schemas/ParamForProSeRemUe'
        paramForProSeU2URelUe:
          $ref: '#/components/schemas/ParamForProSeU2URelUe'
        paramForProSeEndUe:
          $ref: '#/components/schemas/ParamForProSeEndUe'
        paramForRangingSlPos:
          $ref: '#/components/schemas/ParamForRangingSlPos'
        urspGuidance:
          type: array
          items:
            $ref: '#/components/schemas/UrspRuleRequest'
          minItems: 1
          description: Contains the service parameter used to guide the URSP.
        vpsUrspGuidance:
          type: array
          items:
            $ref: '#/components/schemas/UrspRuleRequest'
          minItems: 1
          description: >
            Contains the service parameters used to guide the VPLMN-specific URSP
            rule(s).
        a2xParamsPc5:
          $ref: '#/components/schemas/A2xParamsPc5'
        a2xParamsUu:
          $ref: '#/components/schemas/A2xParamsUu'
        tnaps:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId'
          minItems: 1
          description: Contains the TNAP IDs collocated with the 5G-RG(s) of a specific user.
        mtcProviderId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation'
        suppFeat:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'

    ServiceParameterDataPatch:
      description: >
        Represents the parameters to request the modification of a service parameter
        subscription resource.
      type: object
      properties:
        paramOverPc5:
          $ref: '#/components/schemas/ParameterOverPc5Rm'
        paramOverUu:
          $ref: '#/components/schemas/ParameterOverUuRm'
        paramForProSeDd:
          $ref: '#/components/schemas/ParamForProSeDdRm'
        paramForProSeDc:
          $ref: '#/components/schemas/ParamForProSeDcRm'
        paramForProSeU2NRelUe:
          $ref: '#/components/schemas/ParamForProSeU2NRelUeRm'
        paramForProSeRemUe:
          $ref: '#/components/schemas/ParamForProSeRemUeRm'
        paramForProSeU2URelUe:
          $ref: '#/components/schemas/ParamForProSeU2URelUeRm'
        paramForProSeEndUe:
          $ref: '#/components/schemas/ParamForProSeEndUeRm'
        paramForRangingSlPos:
          $ref: '#/components/schemas/ParamForRangingSlPosRm'
        urspGuidance:
          type: array
          items:
            $ref: '#/components/schemas/UrspRuleRequest'
          minItems: 1
          description: Contains the service parameter used to guide the URSP. 
        vpsUrspGuidance:
          type: array
          items:
            $ref: '#/components/schemas/UrspRuleRequest'
          minItems: 1
          description: >
            Contains the service parameters used to guide the VPLMN-specific
            URSP rule(s).
          nullable: true
        a2xParamsPc5:
          $ref: '#/components/schemas/A2xParamsPc5Rm'
        a2xParamsUu:
          $ref: '#/components/schemas/A2xParamsUuRm'
        tnaps:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId'
          minItems: 1
          description: Contains the TNAP IDs collocated with the 5G-RG(s) of a specific user.
          nullable: true
        subNotifEvents:
          type: array
          items:
            $ref: '#/components/schemas/Event'
          minItems: 1
          nullable: true
          description: >
            Identifies the AF subscribed event(s) notifications related to AF provisioned
            service parameters.
        notificationDestination:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri'

    ParameterOverPc5:
      description: >
        Represents configuration parameters for V2X communications over PC5 reference point.
      type: string

    ParameterOverPc5Rm:
      description: >
        Represents the same as the ParameterOverPc5 data type but with the nullable:true property.
      type: string
      nullable: true

    ParameterOverUu:
      description: >
        Represents configuration parameters for V2X communications over Uu reference point.
      type: string

    ParameterOverUuRm:
      description: >
        Represents the same as the ParameterOverUu data type but with the nullable:true property.
      type: string
      nullable: true

    ParamForProSeDd:
      description: Represents the service parameters for 5G ProSe direct discovery.
      type: string

    ParamForProSeDdRm:
      description: >
        This data type is defined in the same way as the ParamForProSeDd data type,
        but with the OpenAPI nullable property set to true.
      type: string
      nullable: true

    ParamForProSeDc:
      description: Represents the service parameters for 5G ProSe direct communications.
      type: string

    ParamForProSeDcRm:
      description: >
        This data type is defined in the same way as the ParamForProSeDc data type,
        but with the OpenAPI nullable property set to true.
      type: string
      nullable: true

    ParamForProSeU2NRelUe:
      description: Represents the service parameters for 5G ProSe UE-to-network relay UE.
      type: string

    ParamForProSeU2NRelUeRm:
      description: >
        This data type is defined in the same way as the ParamForProSeU2NRelay data type,
        but with the OpenAPI nullable property set to true.
      type: string
      nullable: true

    ParamForProSeRemUe:
      description: Represents the service parameters for 5G ProSe Remote UE.
      type: string

    ParamForProSeRemUeRm:
      description: >
        This data type is defined in the same way as the ParamForProSeRemUe data type,
        but with the OpenAPI nullable property set to true.
      type: string
      nullable: true

    ParamForProSeU2URelUe:
      description: Represents the service parameters for 5G ProSe UE-to-UE relay UE.
      type: string

    ParamForProSeU2URelUeRm:
      description: >
        This data type is defined in the same way as the ParamForProSeU2URelay data type,
        but with the OpenAPI nullable property set to true.
      type: string
      nullable: true

    ParamForProSeEndUe:
      description: Represents the service parameters for 5G ProSe End UE.
      type: string

    ParamForProSeEndUeRm:
      description: >
        This data type is defined in the same way as the ParamForProSeEndUe data type,
        but with the OpenAPI nullable property set to true.
      type: string
      nullable: true

    ParamForRangingSlPos:
      description: Represents the service parameters for ranging and sidelink positioning.
      type: string

    ParamForRangingSlPosRm:
      description: >
        This data type is defined in the same way as the ParamForRangingslpos data type,
        but with the OpenAPI nullable property set to true.
      type: string
      nullable: true

    A2xParamsPc5:
      description: >
        Represents configuration parameters for A2X communications over PC5 reference point.
      type: string

    A2xParamsPc5Rm:
      description: >
        Represents the same as the A2xParamsPc5 data type but with the nullable:true property.
      type: string
      nullable: true

    A2xParamsUu:
      description: >
        Represents configuration parameters for A2X communications over Uu reference point.
      type: string

    A2xParamsUuRm:
      description: >
        Represents the same as the A2xParamsUu data type but with the nullable:true property.
      type: string
      nullable: true

    UrspRuleRequest:
      description: Contains parameters that can be used to guide the URSP.
      type: object
      properties:
        trafficDesc:
          $ref: '#/components/schemas/TrafficDescriptorComponents'
        relatPrecedence:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        visitedNetDescs:
          type: array
          items:
            $ref: '#/components/schemas/NetworkDescription'
          minItems: 1
          description: >
            Each element identifies one or more PLMN IDs where AF guidance for VPLMN-specific
            URSP rule applies.
        routeSelParamSets:
          type: array
          items:
            $ref: '#/components/schemas/RouteSelectionParameterSet'
          minItems: 1
          description: >
            Sets of parameters that may be used to guide the Route Selection Descriptors of the 
            URSP.

    RouteSelectionParameterSet:
      description: >
        Contains parameters that can be used to guide the Route Selection
        Descriptors of the URSP.
      type: object
      properties:
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        snssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        precedence:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger'
        spatialValidityAreas:
          type: array
          items:
            $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea'
          minItems: 1
          description: >
            Indicates where the route selection parameters apply. It may correspond
            to a geographical area, for example using a geographic shape that
            is known to the AF and is configured by the operator to correspond to a list
            of or TAIs.
        spatialValidityTais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
          description: >
            Indicates the TAIs in which the route selection parameters apply. This attribute is 
            applicable only within the 5GC and it shall not be included in the request messages of 
            untrusted AFs for URSP guidance.
        pduSessType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType'

    Event:
      anyOf:
      - type: string
        enum:
          - SUCCESS_UE_POL_DEL_SP
          - UNSUCCESS_UE_POL_DEL_SP
      - type: string
        description: >
          This string provides forward-compatibility with future extensions to the enumeration
          and is not used to encode content defined in the present version of this API.
      description: |
        Represents the AF subscribe to event notification of the outcome related to the
        invocation of AF provisioned service parameters.  
        Possible values are:
        - SUCCESS_UE_POL_DEL_SP: Successful UE Policy Delivery related to 
          the invocation of AF provisioned Service Parameters.
        - UNSUCCESS_UE_POL_DEL_SP: Unsuccessful UE Policy Delivery related to the invocation of AF
           provisioned Service Parameters.

    AfNotification:
      description: >
        Notifications upon AF Service Parameter Authorization Update e.g. to
        revoke the authorization, and/or AF subscribed event notification of the
        outcome related to the invocation of service parameter provisioning.
      type: object
      properties:
        subscription:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Link'
        reportEvent:
          $ref: '#/components/schemas/Event'
        authResult:
          $ref: '#/components/schemas/AuthorizationResult'
        gpsis:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
          minItems: 1
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        snssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        eventInfo:
          $ref: '#/components/schemas/EventInfo'
      required:
        - subscription
      anyOf:
        - required: [reportEvent]
        - required: [authResult]

    TrafficDescriptorComponents:
      description: Traffic descriptor components for the requested URSP.
      type: object
      properties:
        appDescs:
          type: object
          additionalProperties:
            $ref: 'TS29522_5GLANParameterProvision.yaml#/components/schemas/AppDescriptor'
          minProperties: 1
          description: >
            Describes the operation systems and the corresponding applications for each
            operation systems. The key of map is osId.
        flowDescs:
          type: array
          items:
            type: string
          minItems: 1
          description: >
            Represents a 3-tuple with protocol, server ip and server port for UL/DL
            application traffic. The content of the string has the same encoding as the IPFilterRule
            AVP value as defined in IETF RFC 6733.
        domainDescs:
          type: array
          items:
            type: string
          minItems: 1
          description: >
            FQDN(s) or a regular expression which are used as a domain name matching
            criteria.
        ethFlowDescs:
          type: array
          items:
            $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription'
          minItems: 1
          description: >
            Descriptor(s) for destination information of non-IP traffic in which only
            ethernet flow description is defined.
        dnns:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
          minItems: 1
          description: This is matched against the DNN information provided by the application.
        connCaps:
          type: array
          items:
            $ref: '#/components/schemas/ConnectionCapabilities'
          minItems: 1
          description: >
            This is matched against the information provided by a UE application when it
            requests a network connection with certain capabilities.
        opSpecConnCaps:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes'
          minItems: 1
          maxItems: 128
          description: >
            Operator specific connection capabilities.
        pinId:
          type: string
          description: This is matched against a PIN ID for a specific PIN configured in the PEGC.
      oneOf:
        - required: [pinId]
        - anyOf:
          - required: [appDescs]
          - required: [flowDescs]
          - required: [domainDescs]
          - required: [ethFlowDescs]
          - required: [dnns]
          - required: [connCaps]
          - required: [opSpecConnCaps]

    NetworkDescription:
      description: >
        Represents the description of a PLMN, by the definition of the PLMN ID, the MCC (and
        applicable MNC(s)) or the indication of any PLMN.
      type: object
      properties:
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        mcc:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Mcc'
        mncs:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Mnc'
          minItems: 1
          description: Represents the applicable MNC(s) for the indicated MCC.
        anyPlmnInd:
          type: boolean
          description: Indicates any PLMN.
      oneOf:
        - required: [plmnId]
        - required: [mcc]
        - required: [anyPlmnInd]

    AuthorizationResult:
      anyOf:
      - type: string
        enum:
          - AUTH_REVOKED
      - type: string
        description: >
          This string provides forward-compatibility with future extensions to the enumeration
          and is not used to encode content defined in the present version of this API.
      description: |
        Represents the NEF notify the AF about the service parameters authorization updates result,
        e.g. to revoke an authorization.
        Possible values are:
        - AUTH_REVOKED: Indicated the service parameters authorization is revoked.

    EventInfo:
      description: Indicates the event information.
      type: object
      properties:
        failureCause:
          $ref: '#/components/schemas/Failure'
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'

    Failure:
      anyOf:
      - type: string
        enum:
          - UNSPECIFIED
          - UE_NOT_REACHABLE
          - UNKNOWN
          - UE_TEMP_UNREACHABLE
      - type: string
        description: >
          This string provides forward-compatibility with future extensions to the enumeration
          and is not used to encode content defined in the present version of this API.
      description: |
        Represents the failure reason for the unsuccessful result.  
        Possible values are:
        - UNSPECIFIED: Indicates the PCF received the UE sent UE policy delivery service cause #111
          (Protocol error, unspecified).
        - UE_NOT_REACHABLE: Indicates the PCF received the notification from the AMF that the UE is
          not reachable.
        - UNKNOWN: Indicates unknown reasons upon no response from the UE, e.g. UPDS message type is
          not defined or not implemented by the UE, or not compatible with the UPDS state, in which
          the UE shall ignore the UPDS message.
        - UE_TEMP_UNREACHABLE: Indicates the PCF received the notification from the AMF that the UE
          is not reachable but the PCF will retry again.

    ConnectionCapabilities:
      anyOf:
      - type: string
        enum:
          - IMS
          - MMS
          - SUPL
          - INTERNET
          - IOT_DELAY_TOLERANT
          - IOT_NON_DELAY_TOLERANT
          - DL_STREAMING
          - UL_STREAMING
          - VEHIC_COMM
          - REAL_TIME_INTERACTIVE
          - UNIFIED_COMM
          - BACKGROUND
          - MISS_CRITICAL
          - TIME_CRITICAL
          - LOW_LAT_LOSS_TOL_UNACK
      - type: string
        description: >
          This string provides forward-compatibility with future
          extensions to the enumeration and is not used to encode
          content defined in the present version of this API.
      description: |
        Represents the information provided by a UE application when it requests a network
        connection with certain capabilities.  
        Possible values are:
          - IMS: Indicates the connection capability to support IMS service.
          - MMS: Indicates the connection capability to support MMS service.
          - SUPL: Indicates the connection capability to support SUPL service.
          - INTERNET: Indicates the connection capability to support Internet service.
          - IOT_DELAY_TOLERANT: Indicates the connection capability to support IoT
            delay-tolerant services.
          - IOT_NON_DELAY_TOLERANT: Indicates the connection capability to support IoT
            non-delay-tolerant services.
          - DL_STREAMING: Indicates the connection capability to support downlink streaming
            services.
          - UL_STREAMING: Indicates the connection capability to support uplink streaming services
          - VEHIC_COMM: Indicates the connection capability to support vehicular communication
            services.
          - REAL_TIME_INTERACTIVE: Indicates the connection capability to support real time
            interactive services.
          - UNIFIED_COMM: Indicates the connection capability to support unified communication
            services.
          - BACKGROUND: Indicates the connection capability to support background services.
          - MISS_CRITICAL: Indicates the connection capability to support mission critical services.
          - TIME_CRITICAL: Indicates the connection capability to support time critical services.
          - LOW_LAT_LOSS_TOL_UNACK: Indicates the connection capability to support low latency
            loss tolerant communications in un-acknowledged mode.
