openapi: 3.0.0
info:
  title: "Npcf_PolicyAuthorization Service API"
  version: "1.0.0"
  description: "This is the Policy Authorization Service"

externalDocs:
  description: 3GPP TS 29.514 V15.2.0; 5G System; Policy Authorization Service;Stage 3.
  url: 'http://www.3gpp.org/ftp/Specs/archive/29_series/29.514/'
#
servers:
  - url: ’{apiRoot}/npcf-policyauthorization/v1’
    variables:
      apiRoot:
        default: https://example.com
        description: apiRoot as defined in subclause 4.4 of 3GPP TS 29.501

security:
  - {}
  - oAuth2ClientCredentials:
    - npcf-policyauthorization

paths:
  /app-sessions:
    post:
      summary: Creates a new Individual Application Session Context resource
      operationId: PostAppSessions
      tags:
        - Application Sessions (Collection)
      requestBody:
        description: Contains the information for the creation the resource
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppSessionContext'
      responses:
        '201':
          description: Successful creation of the resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppSessionContext'
          headers:
            Location:
              description: 'Contains the URI of the created individual application session context resource, according to the structure: {apiRoot}/npcf-policyauthorization/v1/app-sessions/{appSessionId} or the URI of the created events subscription sub-resource, according to the structure: {apiRoot}/npcf-policyauthorization/v1/app-sessions/{appSessionId}/events-subscription}'
              required: true
              schema:
                type: string
        '303':
          description: See Other. The result of the HTTP POST request would be equivalent to the existing Application Session Context. The HTTP response shall contain a Location header field set to the URI of the existing individual Application Session Context resource
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
      callbacks:
        terminationRequest:
          '{$request.body#/notifUri}/terminate':
            post:
              requestBody:
                description: Request of the termination of the Individual Application Session Context
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/TerminationInfo'
              responses:
                '204':
                  description: The receipt of the notification is acknowledged.
                '400':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/400'
                '401':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/401'
                '403':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/403'
                '404':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/404'
                '411':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/411'
                '413':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/413'
                '415':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/415'
                '429':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/429'
                '500':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/500'
                '503':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29571_CommonData.yaml#/components/responses/default'
        eventNotification:
          '{$request.body#/evSubsc/notifUri}/notify':
            post:
              requestBody:
                description: Notification of an event occurrence in the PCF.
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/EventsNotification'
              responses:
                '204':
                  description: The receipt of the notification is acknowledged
                '400':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/400'
                '401':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/401'
                '403':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/403'
                '404':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/404'
                '411':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/411'
                '413':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/413'
                '415':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/415'
                '429':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/429'
                '500':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/500'
                '503':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29571_CommonData.yaml#/components/responses/default'
  /app-sessions/{appSessionId}:
    get:
      summary: "Reads an existing Individual Application Session Context"
      operationId: GetAppSession
      tags:
        - Individual Application Session Context (Document)
      parameters:
        - name: appSessionId
          description: string identifying the resource
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: A representation of the resource is returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppSessionContext'
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '406':
          $ref: 'TS29571_CommonData.yaml#/components/responses/406'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    patch:
      summary: "Modifies an existing Individual Application Session Context"
      operationId: ModAppSession
      tags:
        - Individual Application Session Context (Document)
      parameters:
        - name: appSessionId
          description: string identifying the resource
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: modification of the resource.
        required: true
        content:
          application/merge-patch+json:
            schema:
              $ref: '#/components/schemas/AppSessionContextUpdateData'
      responses:
        '200':
          description: successful modification of the resource and a representation of that resource is returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppSessionContext'
        '204':
          description: The successful modification
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
      callbacks:
        eventNotification:
          '{$request.body#/evSubsc/notifUri}/notify':
            post:
              requestBody:
                description: Notification of an event occurrence in the PCF.
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/EventsNotification'
              responses:
                '204':
                  description: The receipt of the notification is acknowledged
                '400':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/400'
                '401':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/401'
                '403':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/403'
                '404':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/404'
                '411':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/411'
                '413':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/413'
                '415':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/415'
                '429':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/429'
                '500':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/500'
                '503':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29571_CommonData.yaml#/components/responses/default'
#                
#                
  /app-sessions/{appSessionId}/delete:
    post:
      summary: "Deletes an existing Individual Application Session Context"
      operationId: DeleteAppSession
      tags:
        - Individual Application Session Context (Document)
      parameters:
        - name: appSessionId
          description: string identifying the Individual Application Session Context resource
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: deletion of the Individual Application Session Context resource, req notification
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventsSubscReqData'
      responses:
        '200':
          description: The deletion of the resource is confirmed and a resource is returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppSessionContext'
        '204':
          description: The deletion is confirmed without returning additional data.
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'https://raw.githubusercontent.com/jdegre/5GC_APIs/master/TS29571_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'https://raw.githubusercontent.com/jdegre/5GC_APIs/master/TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
#               
  /app-sessions/{appSessionId}/events-subscription:
    put:
      summary: "creates or modifies an Events Subscription subresource"
      operationId: updateEventsSubsc
      tags:
        - Events Subscription (Document)
      parameters:
        - name: appSessionId
          description: string identifying the Events Subscription resource
          in: path
          required: true
          schema:
            type: string
      requestBody:
        description: Creation or modification of an Events Subscription resource.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventsSubscReqData'
      responses:
        '201':
          description: The creation of the Events Subscription resource is confirmed and its representation is returned.
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/EventsSubscReqData'
                  - $ref: '#/components/schemas/EventsNotification'
          headers:
            Location:
              description: 'Contains the URI of the created Events Subscription resource, according to the structure: {apiRoot}/npcf-policyauthorization/v1/app-sessions/{appSessionId}/events-subscription}'
              required: true
              schema:
                type: string
        '200':
          description: The modification of the of the Events Subscription resource is confirmed its representation is returned.
          content:
            application/json:
                schema:
                  anyOf:
                  - $ref: '#/components/schemas/EventsSubscReqData'
                  - $ref: '#/components/schemas/EventsNotification'
        '204':
          description: The modification of the Events Subscription subresource is confirmed without returning additional data.
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '411':
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '413':
          $ref: 'TS29571_CommonData.yaml#/components/responses/413'
        '415':
          $ref: 'TS29571_CommonData.yaml#/components/responses/415'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
      callbacks:
        eventNotification:
          '{$request.body#/notifUri}/notify':
            post:
              requestBody:
                description: Contains the information for the notification of an event occurrence in the PCF.
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/EventsNotification'
              responses:
                '204':
                  description: The receipt of the notification is acknowledged.
                '400':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/400'
                '401':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/401'
                '403':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/403'
                '404':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/404'
                '411':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/411'
                '413':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/413'
                '415':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/415'
                '429':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/429'
                '500':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/500'
                '503':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    delete:
      summary: deletes the Events Subscription subresource
      operationId: DeleteEventsSubsc
      tags:
        - Events Subscription (Document)
      parameters:
        - name: appSessionId
          description: string identifying the Individual Application Session Context resource
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: The deletion of the of the Events Subscription sub-resource is confirmed without returning additional data.
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29571_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
components:
  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '{nrfApiRoot}/oauth2/token'
          scopes:
            npcf-policyauthorization: Access to the Npcf_PolicyAuthorization API
  schemas:
    AppSessionContext:
      description: Represents an Individual Application Session Context resource.
      type: object
      properties:
        ascReqData:
          $ref: '#/components/schemas/AppSessionContextReqData'
        ascRespData:
          $ref: '#/components/schemas/AppSessionContextRespData'
        evsNotif:
          $ref: '#/components/schemas/EventsNotification'
    AppSessionContextReqData:
      description: Identifies the service requirements of an Individual Application Session Context.
      type: object
      required:
        - notifUri
        - suppFeat
      oneOf:
        - required: [ueIpv4]
        - required: [ueIpv6]
        - required: [ueMac]
      properties:
        afAppId:
          $ref: '#/components/schemas/AfAppId'
        afRoutReq:
          $ref: '#/components/schemas/AfRoutingRequirement'
        aspId:
          $ref: '#/components/schemas/AspId'
        bdtRefId:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId'
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        evSubsc:
          $ref: '#/components/schemas/EventsSubscReqData'
        medComponents:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/MediaComponent'
          minProperties: 1
        ipDomain:
          type: string
        mpsId:
          description: indication of MPS service request
          type: string
        notifUri:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri'
        sliceInfo:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        sponId:
          $ref: '#/components/schemas/SponId'
        sponStatus:
          $ref: '#/components/schemas/SponsoringStatus'
        supi:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi'
        suppFeat:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
        ueIpv4:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        ueIpv6:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
        ueMac:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
    AppSessionContextRespData:
      description: Describes the authorization data of an Individual Application Session Context created by the PCF.
      type: object
      properties:
        servAuthInfo:
          $ref: '#/components/schemas/ServAuthInfo'
        suppFeat:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
    AppSessionContextUpdateData:
      description: Identifies the modifications to an Individual Application Session Context and may include the modifications to the sub-resource Events Subscription.
      type: object
      properties:
        afAppId:
          $ref: '#/components/schemas/AfAppId'
        afRoutReq:
          $ref: '#/components/schemas/AfRoutingRequirementRm'
        aspId:
          $ref: '#/components/schemas/AspId'
        bdtRefId:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId'
        evSubsc:
          $ref: '#/components/schemas/EventsSubscReqDataRm'
        medComponents:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/MediaComponentRm'
          minProperties: 1
        mpsId:
          description: indication of MPS service request
          type: string
        sponId:
          $ref: '#/components/schemas/SponId'
        sponStatus:
          $ref: '#/components/schemas/SponsoringStatus'
    EventsSubscReqData:
      description: Identifies the events the application subscribes to.
      type: object
      required:
        - events
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/AfEventSubscription'
          minItems: 1
        notifUri:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri'
        usgThres:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold'
    
    EventsSubscReqDataRm:
      description: this data type is defined in the same way as the EventsSubscReqData data type, but with the OpenAPI nullable property set to true.
      type: object
      required:
        - events
      properties:
        events:
          type: array
          items:
            $ref: '#/components/schemas/AfEventSubscription'
        notifUri:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri'
        usgThres:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThresholdRm'
      nullable: true
    MediaComponent:
      description: Identifies a media component.
      type: object
      required:
        - medCompN
      properties:
        afAppId:
          $ref: '#/components/schemas/AfAppId'
        afRoutReq:
          $ref: '#/components/schemas/AfRoutingRequirement'
        contVer:
          $ref: '#/components/schemas/ContentVersion'
        codecs:
          type: array
          items:
            $ref: '#/components/schemas/CodecData'
          minItems: 1
          maxItems: 2
        fStatus:
          $ref: '#/components/schemas/FlowStatus'
        marBwDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        marBwUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        medCompN:
          type: integer
        medSubComps:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/MediaSubComponent'
          minProperties: 1
        medType:
          $ref: '#/components/schemas/MediaType'
        mirBwDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        mirBwUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        resPrio:
          $ref: '#/components/schemas/ReservPriority'

    MediaComponentRm:
      description: This data type is defined in the same way as the MediaComponent data type, but with the OpenAPI nullable property set to true
      type: object
      required:
        - medCompN
      properties:
        afAppId:
          $ref: '#/components/schemas/AfAppId'
        afRoutReq:
          $ref: '#/components/schemas/AfRoutingRequirementRm'
        contVer:
          $ref: '#/components/schemas/ContentVersion'
        codecs:
          type: array
          items:
            $ref: '#/components/schemas/CodecData'
          minItems: 1
          maxItems: 2
        fStatus:
          $ref: '#/components/schemas/FlowStatus'
        marBwDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm'
        marBwUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm'
        medCompN:
          type: integer
        medSubComps:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/MediaSubComponentRm'
          minProperties: 1
        medType:
          $ref: '#/components/schemas/MediaType'
        mirBwDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm'
        mirBwUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm'
        resPrio:
          $ref: '#/components/schemas/ReservPriority'
      nullable: true
    MediaSubComponent:
      description: Identifies a media subcomponent
      type: object
      required:
        - fNum
      properties:
        ethfDescs:
          type: array
          items:
            $ref: '#/components/schemas/EthFlowDescription'
          minItems: 1
          maxItems: 2
        fNum:
          type: integer
        fDescs:
          type: array
          items:
            $ref: '#/components/schemas/FlowDescription'
          minItems: 1
          maxItems: 2
        fStatus:
          $ref: '#/components/schemas/FlowStatus'
        marBwDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        marBwUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate'
        tosTrCl:
          $ref: '#/components/schemas/TosTrafficClass'
        flowUsage:
          $ref: '#/components/schemas/FlowUsage'
    MediaSubComponentRm:
      description: This data type is defined in the same way as the MediaSubComponent data type, but with the OpenAPI nullable property set to true. Removable attributes marBwDland marBwUl are defined with the corresponding removable data type.
      type: object
      required:
        - fNum
      properties:
        ethfDescs:
          type: array
          items:
            $ref: '#/components/schemas/EthFlowDescription'
          minItems: 1
          maxItems: 2
          nullable: true
        fNum:
          type: integer
        fDescs:
          type: array
          items:
            $ref: '#/components/schemas/FlowDescription'
          minItems: 1
          maxItems: 2
          nullable: true
        fStatus:
          $ref: '#/components/schemas/FlowStatus'
        marBwDl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm'
        marBwUl:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm'
        tosTrCl:
          $ref: '#/components/schemas/TosTrafficClassRm'
        flowUsage:
          $ref: '#/components/schemas/FlowUsage'
      nullable: true
    EventsNotification:
      description: describes the notification of a matched event
      type: object
      required:
        - evSubsUri
        - evNotifs
      properties:
        accessType:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType'
        anGwAddr:
          $ref: '#/components/schemas/AnGwAddress'
        evSubsUri:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri'
        evNotifs:
          type: array
          items:
            $ref: '#/components/schemas/AfEventNotification'
          minItems: 1
        failedResourcAllocReports:
          type: array
          items:
            $ref: '#/components/schemas/ResourcesAllocationInfo'
          minItems: 1
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        qncReports:
          type: array
          items:
            $ref: '#/components/schemas/QosNotificationControlInfo'
          minItems: 1
        ratType: 
          $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType'
        usgRep:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/AccumulatedUsage'
    AfEventSubscription:
      description: describes the event information delivered in the subscription
      type: object
      required:
        - event
      properties:
        event:
          $ref: '#/components/schemas/AfEvent'
        notifMethod:
          $ref: '#/components/schemas/AfNotifMethod'
    AfEventNotification:
      description: describes the event information delivered in the notification
      type: object
      required:
        - event
      properties:
        event:
          $ref: '#/components/schemas/AfEvent'
        flows:
          type: array
          items:
            $ref: '#/components/schemas/Flows'
          minItems: 1
    TerminationInfo:
      description: indicates the cause for requesting the deletion of the Individual Application Session Context resource
      type: object
      required:
        - termCause
        - resUri
      properties:
        termCause:
          $ref: '#/components/schemas/TerminationCause'
        resUri:
          $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri'
    AfRoutingRequirement:
      description: describes the event information delivered in the subscription
      type: object
      properties:
        appReloc:
          type: boolean
        routeToLocs:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
          minItems: 1
        spVal:
          $ref: '#/components/schemas/SpatialValidity'
        tempVals:
          type: array
          items:
            $ref: '#/components/schemas/TemporalValidity'
          minItems: 1
        upPathChgSub:
          $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/UpPathChgEvent'
    SpatialValidity:
      description: describes explicitly the route to an Application location
      type: object
      required:
        - presenceInfoList
      properties:
        presenceInfoList:
          type: object
          additionalProperties:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo'
          minProperties: 1
    SpatialValidityRm:
      description: this data type is defined in the same way as the SpatialValidity data type, but with the OpenAPI nullable property set to true
      type: object
      required:
        - presenceInfoList
      properties:
        presenceInfoList:
          type: object
          additionalProperties:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo'
          minProperties: 1
      nullable: true
    AfRoutingRequirementRm:
      description: this data type is defined in the same way as the AfRoutingRequirement data type, but with the OpenAPI nullable property set to true and the spVal and tempVals attributes defined as removable.
      type: object
      properties:
        appReloc:
          type: boolean
        routeToLocs:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation'
          minItems: 1
          nullable: true
        spVal:
          $ref: '#/components/schemas/SpatialValidityRm'
        tempVals:
          type: array
          items:
            $ref: '#/components/schemas/TemporalValidity'
          minItems: 1
          nullable: true
        upPathChgSub:
          $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/UpPathChgEvent'
      nullable: true
    AnGwAddress:
      description: describes the address of the access network gateway control node
      type: object
      anyOf:
        - required: [anGwIpv4Addr]
        - required: [anGwIpv6Addr]
      properties:
        anGwIpv4Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        anGwIpv6Addr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
    Flows:
      description: Identifies the flows
      type: object
      required:
        - medCompN
      properties:
        contVers:
          type: array
          items:
            $ref: '#/components/schemas/ContentVersion'
          minItems: 1
        fNums:
          type: array
          items:
            type: integer
          minItems: 1
        medCompN:
          type: integer
          
    EthFlowDescription:
      description: Identifies an Ethernet flow
      type: object
      required:
        - ethType
      properties:
        destMacAddr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
        ethType:
          type: string
        fDesc:
          $ref: '#/components/schemas/FlowDescription'
        fDir:
          $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowDirection'
        sourceMacAddr:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48'
        vlanTags:
          type: array
          items:
            type: string
          minItems: 1
          maxItems: 2
            
    ResourcesAllocationInfo:
      description: describes the status of the PCC rule(s) related to certain media components.
      type: object
      required:
        - mcResourcStatus
      properties:
        mcResourcStatus:
          $ref: '#/components/schemas/MediaComponentResourcesStatus'
        flows:
          type: array
          items:
            $ref: '#/components/schemas/Flows'
          minItems: 1
    TemporalValidity:
      description: Indicates the time interval(s) during which the AF request is to be applied
      type: object
      properties:
        startTime:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        stopTime:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
#
    QosNotificationControlInfo:
      description: Indicates whether the QoS targets for a GRB flow are not guaranteed or guaranteed again
      type: object
      required:
        - notifType
      properties:
        notifType:
          $ref: '#/components/schemas/QosNotifType'
        flows:
          type: array
          items:
            $ref: '#/components/schemas/Flows'
          minItems: 1
#
# SIMPLE DATA TYPES
#

    AfAppId:
      description: Contains an AF application identifier.
      type: string
    AspId:
      description: Contains an identity of an application service provider.
      type: string
    CodecData:
      description: Contains codec related information.
      type: string
    ContentVersion:
      description: Represents the content version of some content.
      type: integer
    FlowDescription:
      description: Defines a packet filter of an IP flow.
      type: string

    SponId:
      description: Contains an identity of a sponsor.
      type: string
    TosTrafficClass:
      description: 2-octet string, where each octet is encoded in hexadecimal representation. The first octet contains the IPv4 Type-of-Service or the IPv6 Traffic-Class field and the second octet contains the ToS/Traffic Class mask field.
      type: string
    TosTrafficClassRm:
      description: this data type is defined in the same way as the TosTrafficClass data type, but with the OpenAPI nullable property set to true
      type: string
      nullable: true

#
# ENUMERATIONS DATA TYPES
#
    MediaType:
      anyOf:
        - type: string
          enum:
            - AUDIO
            - VIDEO
            - DATA
            - APPLICATION
            - CONTROL
            - TEXT
            - MESSAGE
            - OTHER
        - type: string
#
    ReservPriority:
      anyOf:
        - type: string
          enum:
            - PRIO_1
            - PRIO_2
            - PRIO_3
            - PRIO_4
            - PRIO_5
            - PRIO_6
            - PRIO_7
            - PRIO_8
            - PRIO_9
            - PRIO_10
            - PRIO_11
            - PRIO_12
            - PRIO_13
            - PRIO_14
            - PRIO_15
            - PRIO_16
        - type: string
#        
    ServAuthInfo:
      anyOf:
      - type: string
        enum:
          - TP_NOT_KNOWN
          - TP_EXPIRED
          - TP_NOT_YET_OCURRED
      - type: string
#      
    SponsoringStatus:
      anyOf:
      - type: string
        enum:
          - SPONSOR_DISABLED
          - SPONSOR_ENABLED
      - type: string
#        
    AfEvent:
      anyOf:
      - type: string
        enum:
          - ACCESS_TYPE_CHANGE
          - FAILED_RESOURCES_ALLOCATION
          - PLMN_CHG
          - QOS_NOTIF
          - SUCCESSFUL_RESOURCES_ALLOCATION
          - USAGE_REPORT
      - type: string
#        
    AfNotifMethod:
      anyOf:
      - type: string
        enum:
          - EVENT_DETECTION
          - ONE_TIME
      - type: string
#        
    QosNotifType:
      anyOf:
      - type: string
        enum:
          - GUARANTEED
          - NOT_GUARANTEED
      - type: string
#        
    TerminationCause:
      anyOf:
      - type: string
        enum:
          - ALL_SDF_DEACTIVATION
          - PDU_SESSION_TERMINATION
      - type: string
#        
    MediaComponentResourcesStatus:
      anyOf:
      - type: string
        enum:
          - ACTIVE
          - INACTIVE
      - type: string
#
#
    FlowUsage:
      anyOf:
      - type: string
        enum:
          - NO_INFO
          - RTCP
      - type: string


    FlowStatus:
      anyOf:
      - type: string
        enum:
          - ENABLED-UPLINK
          - ENABLED-DOWNLINK
          - ENABLED
          - DISABLED
          - REMOVED
      - type: string