openapi: 3.0.0

info:
  version: '1.2.0'
  title: 'NRF NFManagement Service'
  description: |
    NRF NFManagement Service.  
    © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).  
    All rights reserved.

externalDocs:
  description: 3GPP TS 29.510 V17.6.0; 5G System; Network Function Repository Services; Stage 3
  url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.510/'

servers:
  - url: '{apiRoot}/nnrf-nfm/v1'
    variables:
      apiRoot:
        default: https://example.com
        description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501

security:
  - {}
  - oAuth2ClientCredentials:
      - nnrf-nfm

paths:
  /nf-instances:
    get:
      summary: Retrieves a collection of NF Instances
      operationId: GetNFInstances
      tags:
        - NF Instances (Store)
      security:
        - {}
        - oAuth2ClientCredentials:
          - nnrf-nfm
        - oAuth2ClientCredentials:
          - nnrf-nfm
          - nnrf-nfm:nf-instances:read
      parameters:
        - name: nf-type
          in: query
          description: Type of NF
          required: false
          schema:
            $ref: '#/components/schemas/NFType'
        - name: limit
          in: query
          description: How many items to return at one time
          required: false
          schema:
            type: integer
            minimum: 1
        - name: page-number
          in: query
          description: Page number where the response shall start
          required: false
          schema:
            type: integer
            minimum: 1
        - name: page-size
          in: query
          description: Maximum number of items in each returned page
          schema:
            type: integer
            minimum: 1
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/3gppHal+json:
              schema:
                $ref: '#/components/schemas/UriList'
          headers:
            ETag:
              description: Entity Tag containing a strong validator, described in IETF RFC 7232, 2.3
              schema:
                type: string
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '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'
        '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'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    options:
      summary: Discover communication options supported by NRF for NF Instances
      operationId: OptionsNFInstances
      tags:
        - NF Instances (Store)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OptionsResponse'
          headers:
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
        '204':
          description: No Content
          headers:
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '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'
        '405':
          $ref: 'TS29571_CommonData.yaml#/components/responses/405'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'

  /nf-instances/{nfInstanceID}:
    get:
      summary: Read the profile of a given NF Instance
      operationId: GetNFInstance
      tags:
        - NF Instance ID (Document)
      security:
        - {}
        - oAuth2ClientCredentials:
          - nnrf-nfm
        - oAuth2ClientCredentials:
          - nnrf-nfm
          - nnrf-nfm:nf-instances:read
      parameters:
        - name: nfInstanceID
          in: path
          description: Unique ID of the NF Instance
          required: true
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
        - name: requester-features
          in: query
          description: Features supported by the NF Service Consumer
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
      responses:
        '200':
          description: Expected response to a valid request
          headers:
            ETag:
              description: Entity Tag containing a strong validator, described in IETF RFC 7232, 2.3
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NFProfile'
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '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'
        '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'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    put:
      summary: Register a new NF Instance
      operationId: RegisterNFInstance
      tags:
        - NF Instance ID (Document)
      parameters:
        - name: nfInstanceID
          in: path
          required: true
          description: Unique ID of the NF Instance to register
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
        - name: Content-Encoding
          in: header
          description: Content-Encoding, described in IETF RFC 7231
          schema:
            type: string
        - name: Accept-Encoding
          in: header
          description: Accept-Encoding, described in IETF RFC 7231
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NFProfile'
        required: true
      responses:
        '200':
          description: OK (Profile Replacement)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NFProfile'
          headers:
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
            Content-Encoding:
              description: Content-Encoding, described in IETF RFC 7231
              schema:
                type: string
            ETag:
              description: Entity Tag containing a strong validator, described in IETF RFC 7232, 2.3
              schema:
                type: string
        '201':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NFProfile'
          headers:
            Location:
              description: >
                Contains the URI of the newly created resource, according to the structure:
                {apiRoot}/nnrf-nfm/v1/nf-instances/{nfInstanceId}
              required: true
              schema:
                type: string
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
            Content-Encoding:
              description: Content-Encoding, described in IETF RFC 7231
              schema:
                type: string
            ETag:
              description: Entity Tag containing a strong validator, described in IETF RFC 7232, 2.3
              schema:
                type: string
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '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'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    patch:
      summary: Update NF Instance profile
      operationId: UpdateNFInstance
      tags:
        - NF Instance ID (Document)
      parameters:
        - name: nfInstanceID
          in: path
          required: true
          description: Unique ID of the NF Instance to update
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
        - name: Content-Encoding
          in: header
          description: Content-Encoding, described in IETF RFC 7231
          schema:
            type: string
        - name: Accept-Encoding
          in: header
          description: Accept-Encoding, described in IETF RFC 7231
          schema:
            type: string
        - name: If-Match
          in: header
          description: Validator for conditional requests, as described in IETF RFC 7232, 3.2
          schema:
            type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem'
              minItems: 1
        required: true
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NFProfile'
          headers:
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
            ETag:
              description: Entity Tag containing a strong validator, described in IETF RFC 7232, 2.3
              schema:
                type: string
            Content-Encoding:
              description: Content-Encoding, described in IETF RFC 7231
              schema:
                type: string
        '204':
          description: Expected response with empty body
          headers:
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '403':
          $ref: 'TS29571_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29571_CommonData.yaml#/components/responses/404'
        '409':
          $ref: 'TS29571_CommonData.yaml#/components/responses/409'
        '411':
          $ref: 'TS29571_CommonData.yaml#/components/responses/411'
        '412':
          $ref: 'TS29571_CommonData.yaml#/components/responses/412'
        '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'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    delete:
      summary: Deregisters a given NF Instance
      operationId: DeregisterNFInstance
      tags:
        - NF Instance ID (Document)
      parameters:
        - name: nfInstanceID
          in: path
          required: true
          description: Unique ID of the NF Instance to deregister
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
      responses:
        '204':
          description: Expected response to a successful deregistration
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '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'
        '429':
          $ref: 'TS29571_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29571_CommonData.yaml#/components/responses/500'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'

  /subscriptions:
    post:
      summary: Create a new subscription
      operationId: CreateSubscription
      tags:
        - Subscriptions (Collection)
      parameters:
        - name: Content-Encoding
          in: header
          description: Content-Encoding, described in IETF RFC 7231
          schema:
            type: string
        - name: Accept-Encoding
          in: header
          description: Accept-Encoding, described in IETF RFC 7231
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionData'
        required: true
      responses:
        '201':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionData'
          headers:
            Location:
              description: >
                Contains the URI of the newly created resource, according to the structure:
                {apiRoot}/nnrf-nfm/v1/subscriptions/{subscriptionId}
              required: true
              schema:
                type: string
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
            Content-Encoding:
              description: Content-Encoding, described in IETF RFC 7231
              schema:
                type: string
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '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'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
      callbacks:
        onNFStatusEvent:
          '{$request.body#/nfStatusNotificationUri}':
            post:
              parameters:
                - name: Content-Encoding
                  in: header
                  description: Content-Encoding, described in IETF RFC 7231
                  schema:
                    type: string
              requestBody:
                description: Notification Payload
                content:
                  application/json:
                    schema:
                      $ref: '#/components/schemas/NotificationData'
              responses:
                '204':
                  description: Expected response to a successful callback processing
                  headers:
                    Accept-Encoding:
                      description: Accept-Encoding, described in IETF RFC 7694
                      schema:
                        type: string
                '307':
                  description: Temporary Redirect
                  content:
                    application/json:
                      schema:
                        $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
                  headers:
                    Location:
                      description: >
                        The URI pointing to the resource located on another NF service
                        consumer instance
                      required: true
                      schema:
                        type: string
                '308':
                  description: Permanent Redirect
                  content:
                    application/json:
                      schema:
                        $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
                  headers:
                    Location:
                      description: >
                        The URI pointing to the resource located on another NF service
                        consumer instance
                      required: true
                      schema:
                        type: string
                '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'
                '501':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/501'
                '503':
                  $ref: 'TS29571_CommonData.yaml#/components/responses/503'
                default:
                  $ref: 'TS29571_CommonData.yaml#/components/responses/default'

  /subscriptions/{subscriptionID}:
    patch:
      summary: Updates a subscription
      operationId: UpdateSubscription
      tags:
        - Subscription ID (Document)
      parameters:
        - name: subscriptionID
          in: path
          required: true
          description: Unique ID of the subscription to update
          schema:
            type: string
            pattern: '^([0-9]{5,6}-)?[^-]+$'
        - name: Content-Encoding
          in: header
          description: Content-Encoding, described in IETF RFC 7231
          schema:
            type: string
        - name: Accept-Encoding
          in: header
          description: Accept-Encoding, described in IETF RFC 7231
          schema:
            type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              type: array
              items:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem'
        required: true
      responses:
        '200':
          description: Expected response to a valid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionData'
          headers:
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
            Content-Encoding:
              description: Content-Encoding, described in IETF RFC 7231
              schema:
                type: string
        '204':
          description: No Content
          headers:
            Accept-Encoding:
              description: Accept-Encoding, described in IETF RFC 7694
              schema:
                type: string
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '400':
          $ref: 'TS29571_CommonData.yaml#/components/responses/400'
        '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'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'
    delete:
      summary: Deletes a subscription
      operationId: RemoveSubscription
      tags:
        - Subscription ID (Document)
      parameters:
        - name: subscriptionID
          in: path
          required: true
          description: Unique ID of the subscription to remove
          schema:
            type: string
            pattern: '^([0-9]{5,6}-)?[^-]+$'
      responses:
        '204':
          description: Expected response to a successful subscription removal
        '307':
          description: Temporary Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '308':
          description: Permanent Redirect
          content:
            application/json:
              schema:
                $ref: 'TS29571_CommonData.yaml#/components/schemas/RedirectResponse'
          headers:
            Location:
              description: The URI pointing to the resource located on the redirect target NRF
              required: true
              schema:
                type: string
        '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'
        '501':
          $ref: 'TS29571_CommonData.yaml#/components/responses/501'
        '503':
          $ref: 'TS29571_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29571_CommonData.yaml#/components/responses/default'

components:

  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '/oauth2/token'
          scopes:
            nnrf-nfm: Access to the Nnrf_NFManagement API
            nnrf-nfm:nf-instances:read: >
              Access to read the nf-instances resource, or an individual NF Instance ID resource

  schemas:

    NFProfile:
      description: Information of an NF Instance registered in the NRF
      type: object
      required:
        - nfInstanceId
        - nfType
        - nfStatus
      anyOf:
        - required: [ fqdn ]
        - required: [ ipv4Addresses ]
        - required: [ ipv6Addresses ]
      properties:
        nfInstanceId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
        nfInstanceName:
          type: string
        nfType:
          $ref: '#/components/schemas/NFType'
        nfStatus:
          $ref: '#/components/schemas/NFStatus'
        collocatedNfInstances:
          type: array
          items:
            $ref: '#/components/schemas/CollocatedNfInstance'
          minimum: 1
        heartBeatTimer:
          type: integer
          minimum: 1
        plmnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1
        snpnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
          minItems: 1
        sNssais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
          minItems: 1
        perPlmnSnssaiList:
          type: array
          items:
            $ref: '#/components/schemas/PlmnSnssai'
          minItems: 1
        nsiList:
          type: array
          items:
            type: string
          minItems: 1
        fqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        interPlmnFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        ipv4Addresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6Addresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        allowedPlmns:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1
        allowedSnpns:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
          minItems: 1
        allowedNfTypes:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1
        allowedNfDomains:
          type: array
          items:
            type: string
          minItems: 1
        allowedNssais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
          minItems: 1
        priority:
          type: integer
          minimum: 0
          maximum: 65535
        capacity:
          type: integer
          minimum: 0
          maximum: 65535
        load:
          type: integer
          minimum: 0
          maximum: 100
        loadTimeStamp:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        locality:
          type: string
        udrInfo:
          $ref: '#/components/schemas/UdrInfo'
        udrInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of UdrInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/UdrInfo'
          minProperties: 1
        udmInfo:
          $ref: '#/components/schemas/UdmInfo'
        udmInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of UdmInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/UdmInfo'
          minProperties: 1
        ausfInfo:
          $ref: '#/components/schemas/AusfInfo'
        ausfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of AusfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AusfInfo'
          minProperties: 1
        amfInfo:
          $ref: '#/components/schemas/AmfInfo'
        amfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of AmfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/AmfInfo'
          minProperties: 1
        smfInfo:
          $ref: '#/components/schemas/SmfInfo'
        smfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of SmfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/SmfInfo'
          minProperties: 1
        upfInfo:
          $ref: '#/components/schemas/UpfInfo'
        upfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of UpfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/UpfInfo'
          minProperties: 1
        pcfInfo:
          $ref: '#/components/schemas/PcfInfo'
        pcfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of PcfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PcfInfo'
          minProperties: 1
        bsfInfo:
          $ref: '#/components/schemas/BsfInfo'
        bsfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of BsfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BsfInfo'
          minProperties: 1
        chfInfo:
          $ref: '#/components/schemas/ChfInfo'
        chfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of ChfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ChfInfo'
          minProperties: 1
        nefInfo:
          $ref: '#/components/schemas/NefInfo'
        nrfInfo:
          $ref: '#/components/schemas/NrfInfo'
        udsfInfo:
          $ref: '#/components/schemas/UdsfInfo'
        udsfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of UdsfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/UdsfInfo'
          minProperties: 1
        nwdafInfo:
          $ref: '#/components/schemas/NwdafInfo'
        nwdafInfoList:
          type: object
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of NwdafInfo
          additionalProperties:
            $ref: '#/components/schemas/NwdafInfo'
          minProperties: 1
        pcscfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of PcscfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/PcscfInfo'
          minProperties: 1
        hssInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of HssInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/HssInfo'
          minProperties: 1
        customInfo:
          type: object
        recoveryTime:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        nfServicePersistence:
          type: boolean
          default: false
        nfServices:
          deprecated: true
          type: array
          items:
            $ref: '#/components/schemas/NFService'
          minItems: 1
        nfServiceList:
          description: >
            A map (list of key-value pairs) where serviceInstanceId serves as key of NFService
          type: object
          additionalProperties:
            $ref: '#/components/schemas/NFService'
          minProperties: 1
        nfProfileChangesSupportInd:
          type: boolean
          default: false
          writeOnly: true
        nfProfileChangesInd:
          type: boolean
          default: false
          readOnly: true
        defaultNotificationSubscriptions:
          type: array
          items:
            $ref: '#/components/schemas/DefaultNotificationSubscription'
        lmfInfo:
          $ref: '#/components/schemas/LmfInfo'
        gmlcInfo:
          $ref: '#/components/schemas/GmlcInfo'
        nfSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'
          minItems: 1
        servingScope:
          type: array
          items:
            type: string
          minItems: 1
        lcHSupportInd:
          type: boolean
          default: false
        olcHSupportInd:
          type: boolean
          default: false
        nfSetRecoveryTimeList:
          description: A map (list of key-value pairs) where NfSetId serves as key of DateTime
          type: object
          additionalProperties:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
          minProperties: 1
        serviceSetRecoveryTimeList:
          description: >
            A map (list of key-value pairs) where NfServiceSetId serves as key of DateTime
          type: object
          additionalProperties:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
          minProperties: 1
        scpDomains:
          type: array
          items:
            type: string
          minItems: 1
        scpInfo:
          $ref: '#/components/schemas/ScpInfo'
        seppInfo:
          $ref: '#/components/schemas/SeppInfo'
        vendorId:
          $ref: '#/components/schemas/VendorId'
        supportedVendorSpecificFeatures:
          description: >
            The key of the map is the IANA-assigned SMI Network Management Private Enterprise Codes
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/VendorSpecificFeature'
            minItems: 1
          minProperties: 1
        aanfInfoList:
          type: object
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of AanfInfo
          additionalProperties:
            $ref: '#/components/schemas/AanfInfo'
          minProperties: 1
        5gDdnmfInfo:
          $ref: '#/components/schemas/5GDdnmfInfo'
        mfafInfo:
          $ref: '#/components/schemas/MfafInfo'
        easdfInfoList:
          type: object
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of EasdfInfo
          additionalProperties:
            $ref: '#/components/schemas/EasdfInfo'
          minProperties: 1
        dccfInfo:
          $ref: '#/components/schemas/DccfInfo'
        nsacfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of NsacfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/NsacfInfo'
          minProperties: 1
        mbSmfInfoList:
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of MbSmfInfo
          type: object
          additionalProperties:
            $ref: '#/components/schemas/MbSmfInfo'
          minProperties: 1
        tsctsfInfoList:
          type: object
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of TsctsfInfo
          additionalProperties:
            $ref: '#/components/schemas/TsctsfInfo'
          minProperties: 1
        mbUpfInfoList:
          type: object
          description: >
            A map (list of key-value pairs) where a (unique) valid JSON string
            serves as key of MbUpfInfo
          additionalProperties:
            $ref: '#/components/schemas/MbUpfInfo'
          minProperties: 1
        trustAfInfo:
          $ref: '#/components/schemas/TrustAfInfo'
        nssaafInfo:
          $ref: '#/components/schemas/NssaafInfo'
        hniList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
          minItems: 1
        iwmscInfo:
          $ref: '#/components/schemas/IwmscInfo'
        mnpfInfo:
          $ref: '#/components/schemas/MnpfInfo'

    NFService:
      description: >
        Information of a given NF Service Instance; it is part of the NFProfile of an NF Instance
      type: object
      required:
        - serviceInstanceId
        - serviceName
        - versions
        - scheme
        - nfServiceStatus
      properties:
        serviceInstanceId:
          type: string
        serviceName:
          $ref: '#/components/schemas/ServiceName'
        versions:
          type: array
          items:
            $ref: '#/components/schemas/NFServiceVersion'
          minItems: 1
        scheme:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/UriScheme'
        nfServiceStatus:
          $ref: '#/components/schemas/NFServiceStatus'
        fqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        interPlmnFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        ipEndPoints:
          type: array
          items:
            $ref: '#/components/schemas/IpEndPoint'
          minItems: 1
        apiPrefix:
          type: string
        defaultNotificationSubscriptions:
          type: array
          items:
            $ref: '#/components/schemas/DefaultNotificationSubscription'
          minItems: 1
        allowedPlmns:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1
        allowedSnpns:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
          minItems: 1
        allowedNfTypes:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1
        allowedNfDomains:
          type: array
          items:
            type: string
          minItems: 1
        allowedNssais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
          minItems: 1
        allowedOperationsPerNfType:
          description: A map (list of key-value pairs) where NF Type serves as key
          type: object
          additionalProperties:
            type: array
            items:
              type: string
            minItems: 1
          minProperties: 1
        allowedOperationsPerNfInstance:
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          type: object
          additionalProperties:
            type: array
            items:
              type: string
            minItems: 1
          minProperties: 1
        priority:
          type: integer
          minimum: 0
          maximum: 65535
        capacity:
          type: integer
          minimum: 0
          maximum: 65535
        load:
          type: integer
          minimum: 0
          maximum: 100
        loadTimeStamp:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        recoveryTime:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        supportedFeatures:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
        nfServiceSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId'
          minItems: 1
        sNssais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
          minItems: 1
        perPlmnSnssaiList:
          type: array
          items:
            $ref: '#/components/schemas/PlmnSnssai'
          minItems: 1
        vendorId:
          $ref: '#/components/schemas/VendorId'
        supportedVendorSpecificFeatures:
          description: >
            A map (list of key-value pairs) where IANA-assigned SMI Network Management
            Private Enterprise Codes serves as key
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/VendorSpecificFeature'
            minItems: 1
          minProperties: 1
        oauth2Required:
          type: boolean
        perPlmnOauth2ReqList:
          $ref: '#/components/schemas/PlmnOauth2'

    NFType:
      description: NF types known to NRF
      anyOf:
        - type: string
          enum:
            - NRF
            - UDM
            - AMF
            - SMF
            - AUSF
            - NEF
            - PCF
            - SMSF
            - NSSF
            - UDR
            - LMF
            - GMLC
            - 5G_EIR
            - SEPP
            - UPF
            - N3IWF
            - AF
            - UDSF
            - BSF
            - CHF
            - NWDAF
            - PCSCF
            - CBCF
            - HSS
            - UCMF
            - SOR_AF
            - SPAF
            - MME
            - SCSAS
            - SCEF
            - SCP
            - NSSAAF
            - ICSCF
            - SCSCF
            - DRA
            - IMS_AS
            - AANF
            - 5G_DDNMF
            - NSACF
            - MFAF
            - EASDF
            - DCCF
            - MB_SMF
            - TSCTSF
            - ADRF
            - GBA_BSF
            - CEF
            - MB_UPF
            - NSWOF
            - PKMF
            - MNPF
            - SMS_GMSC
            - SMS_IWMSC
            - MBSF
            - MBSTF
        - type: string

    NefId:
      description: Identity of the NEF
      type: string

    IpEndPoint:
      description: >
        IP addressing information of a given NFService;
        it consists on, e.g. IP address, TCP port, transport protocol...
      type: object
      properties:
        ipv4Address:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        ipv6Address:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
        transport:
          $ref: '#/components/schemas/TransportProtocol'
        port:
          type: integer
          minimum: 0
          maximum: 65535

    SubscriptionData:
      description: >
        Information of a subscription to notifications to NRF events,
        included in subscription requests and responses
      type: object
      required:
        - nfStatusNotificationUri
        - subscriptionId
      properties:
        nfStatusNotificationUri:
          type: string
        reqNfInstanceId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
        subscrCond:
          $ref: '#/components/schemas/SubscrCond'
        subscriptionId:
          type: string
          pattern: '^([0-9]{5,6}-)?[^-]+$'
          readOnly: true
        validityTime:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'
        reqNotifEvents:
          type: array
          items:
            $ref: '#/components/schemas/NotificationEventType'
          minItems: 1
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        nid:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Nid'
        notifCondition:
           $ref: '#/components/schemas/NotifCondition'
        reqNfType:
          $ref: '#/components/schemas/NFType'
        reqNfFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        reqSnssais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
          minItems: 1
        reqPerPlmnSnssais:
          type: array
          items:
            $ref: '#/components/schemas/PlmnSnssai'
          minItems: 1
        reqPlmnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1
        reqSnpnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
          minItems: 1
        servingScope:
          type: array
          items:
            type: string
          minItems: 1
        requesterFeatures:
          writeOnly: true
          allOf:
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
        nrfSupportedFeatures:
          readOnly: true
          allOf:
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
        hnrfUri:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
        onboardingCapability:
          type: boolean
          default: false
        targetHni:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        preferredLocality:
          type: string

    SubscrCond:
      description: >
        Condition to determine the set of NFs to monitor under a certain subscription in NRF
      oneOf:
        - $ref: '#/components/schemas/NfInstanceIdCond'
        - $ref: '#/components/schemas/NfInstanceIdListCond'
        - $ref: '#/components/schemas/NfTypeCond'
        - $ref: '#/components/schemas/ServiceNameCond'
        - $ref: '#/components/schemas/ServiceNameListCond'
        - $ref: '#/components/schemas/AmfCond'
        - $ref: '#/components/schemas/GuamiListCond'
        - $ref: '#/components/schemas/NetworkSliceCond'
        - $ref: '#/components/schemas/NfGroupCond'
        - $ref: '#/components/schemas/NfGroupListCond'
        - $ref: '#/components/schemas/NfSetCond'
        - $ref: '#/components/schemas/NfServiceSetCond'
        - $ref: '#/components/schemas/UpfCond'
        - $ref: '#/components/schemas/ScpDomainCond'
        - $ref: '#/components/schemas/NwdafCond'
        - $ref: '#/components/schemas/NefCond'
        - $ref: '#/components/schemas/DccfCond'

    NfInstanceIdCond:
      description: Subscription to a given NF Instance Id
      type: object
      required:
        - nfInstanceId
      properties:
        nfInstanceId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'

    NfInstanceIdListCond:
      description: Subscription to a list of NF Instances
      type: object
      required:
        - nfInstanceIdList
      properties:
        nfInstanceIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
          minItems: 1

    NfTypeCond:
      description: Subscription to a set of NFs based on their NF Type
      type: object
      required:
        - nfType
      not:
        required: [ nfGroupId ]
      properties:
        nfType:
          $ref: '#/components/schemas/NFType'

    ServiceNameCond:
      description: Subscription to a set of NFs based on their support for a given Service Name
      type: object
      required:
        - serviceName
      properties:
        serviceName:
          $ref: '#/components/schemas/ServiceName'

    ServiceNameListCond:
      description: >
        Subscription to a set of NFs based on their support for a Service Name
        in the Servic Name list
      type: object
      required:
        - conditionType
        - serviceNameList
      properties:
        conditionType:
          type: string
          enum: [ SERVICE_NAME_LIST_COND ]
        serviceNameList:
          type: array
          items:
            $ref: '#/components/schemas/ServiceName'
          minItems: 1

    AmfCond:
      description: Subscription to a set of AMFs, based on AMF Set Id and/or AMF Region Id
      type: object
      anyOf:
        - required: [ amfSetId ]
        - required: [ amfRegionId ]
      properties:
        amfSetId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfSetId'
        amfRegionId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfRegionId'

    GuamiListCond:
      description: Subscription to a set of AMFs, based on their GUAMIs
      type: object
      required:
        - guamiList
      properties:
        guamiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami'

    NetworkSliceCond:
      description: Subscription to a set of NFs, based on the slices (S-NSSAI and NSI) they support
      type: object
      required:
        - snssaiList
      properties:
        snssaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        nsiList:
          type: array
          items:
            type: string

    NfGroupCond:
      description: Subscription to a set of NFs based on their Group Id
      type: object
      required:
        - nfType
        - nfGroupId
      properties:
        nfType:
          type: string
          enum:
            - UDM
            - AUSF
            - UDR
            - PCF
            - CHF
            - HSS
        nfGroupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'

    NfGroupListCond:
      description: Subscription to a set of NFs based on their Group Ids
      type: object
      required:
        - conditionType
        - nfType
        - nfGroupIdList
      properties:
        conditionType:
          type: string
          enum: [ NF_GROUP_LIST_COND ]
        nfType:
          type: string
          enum:
            - UDM
            - AUSF
            - UDR
            - PCF
            - CHF
            - HSS
        nfGroupIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
          minItems: 1

    NotifCondition:
      description: >
        Condition (list of attributes in the NF Profile) to determine whether a notification
        must be sent by NRF
      type: object
      not:
        required: [ monitoredAttributes, unmonitoredAttributes ]
      properties:
        monitoredAttributes:
          type: array
          items:
            type: string
          minItems: 1
        unmonitoredAttributes:
          type: array
          items:
            type: string
          minItems: 1

    UdrInfo:
      description: Information of an UDR NF Instance
      type: object
      properties:
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        gpsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        externalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        supportedDataSets:
          type: array
          items:
            $ref: '#/components/schemas/DataSetId'
          minItems: 1
        sharedDataIdRanges:
          type: array
          items:
            $ref: '#/components/schemas/SharedDataIdRange'
          minItems: 1

    SharedDataIdRange:
      description: A range of SharedDataIds based on regular-expression matching
      type: object
      properties:
        pattern:
          type: string

    SupiRange:
      description: >
        A range of SUPIs (subscriber identities), either based on a numeric range,
        or based on regular-expression matching
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]+$'
        end:
          type: string
          pattern: '^[0-9]+$'
        pattern:
          type: string

    IdentityRange:
      description: >
        A range of GPSIs (subscriber identities), either based on a numeric range,
        or based on regular-expression matching
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]+$'
        end:
          type: string
          pattern: '^[0-9]+$'
        pattern:
          type: string

    InternalGroupIdRange:
      description: >
        A range of Group IDs (internal group identities), either based on a numeric range,
        or based on regular-expression matching
      type: object
      properties:
        start:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId'
        end:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId'
        pattern:
          type: string

    DataSetId:
      description: Types of data sets and subsets stored in UDR
      anyOf:
        - type: string
          enum:
            - SUBSCRIPTION
            - POLICY
            - EXPOSURE
            - APPLICATION
            - A_PFD
            - A_AFTI
            - A_IPTV
            - A_BDT
            - A_SPD
            - A_EASD
            - A_AMI
            - P_UE
            - P_SCD
            - P_BDT
            - P_PLMNUE
            - P_NSSCD
        - type: string

    UdmInfo:
      description: Information of an UDM NF Instance
      type: object
      properties:
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        gpsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        externalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        routingIndicators:
          type: array
          items:
            type: string
            pattern: '^[0-9]{1,4}$'
          minItems: 1
        internalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/InternalGroupIdRange'
          minItems: 1
        suciInfos:
          type: array
          items:
            $ref: '#/components/schemas/SuciInfo'
          minItems: 1

    AusfInfo:
      description: Information of an AUSF NF Instance
      type: object
      properties:
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        routingIndicators:
          type: array
          items:
            type: string
            pattern: '^[0-9]{1,4}$'
          minItems: 1
        suciInfos:
          type: array
          items:
            $ref: '#/components/schemas/SuciInfo'
          minItems: 1

    AmfInfo:
      description: Information of an AMF NF Instance
      type: object
      required:
        - amfSetId
        - amfRegionId
        - guamiList
      properties:
        amfSetId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfSetId'
        amfRegionId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfRegionId'
        guamiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        backupInfoAmfFailure:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami'
          minItems: 1
        backupInfoAmfRemoval:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami'
          minItems: 1
        n2InterfaceAmfInfo:
          $ref: '#/components/schemas/N2InterfaceAmfInfo'
        amfOnboardingCapability:
          type: boolean
          default: false

    SmfInfo:
      description: Information of an SMF NF Instance
      type: object
      required:
        - sNssaiSmfInfoList
      properties:
        sNssaiSmfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/SnssaiSmfInfoItem'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        pgwFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        pgwIpAddrList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr'
          minItems: 1
        accessType:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType'
          minItems: 1
        priority:
          type: integer
          minimum: 0
          maximum: 65535
        vsmfSupportInd:
          type: boolean
        pgwFqdnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
          minItems: 1
        smfOnboardingCapability:
          type: boolean
          default: false
        ismfSupportInd:
          type: boolean

    SnssaiSmfInfoItem:
      description: Set of parameters supported by SMF for a given S-NSSAI
      type: object
      required:
        - sNssai
        - dnnSmfInfoList
      properties:
        sNssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        dnnSmfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/DnnSmfInfoItem'
          minItems: 1

    DnnSmfInfoItem:
      description: Set of parameters supported by SMF for a given DNN
      type: object
      required:
        - dnn
      properties:
        dnn:
          anyOf:
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn'
        dnaiList:
          type: array
          items:
            anyOf:
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
              - $ref: '#/components/schemas/WildcardDnai'
          minItems: 1

    UpfInfo:
      description: Information of an UPF NF Instance
      type: object
      required:
        - sNssaiUpfInfoList
      properties:
        sNssaiUpfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/SnssaiUpfInfoItem'
          minItems: 1
        smfServingArea:
          type: array
          items:
            type: string
          minItems: 1
        interfaceUpfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/InterfaceUpfInfoItem'
          minItems: 1
        iwkEpsInd:
          type: boolean
          default: false
        pduSessionTypes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType'
          minItems: 1
        atsssCapability:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/AtsssCapability'
        ueIpAddrInd:
          type: boolean
          default: false
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        wAgfInfo:
          $ref: '#/components/schemas/WAgfInfo'
        tngfInfo:
          $ref: '#/components/schemas/TngfInfo'
        twifInfo:
          $ref: '#/components/schemas/TwifInfo'
        priority:
          type: integer
          minimum: 0
          maximum: 65535
        redundantGtpu:
          type: boolean
          default: false
        ipups:
          type: boolean
          default: false
        dataForwarding:
          type: boolean
          default: false
        supportedPfcpFeatures:
          type: string

    SnssaiUpfInfoItem:
      description: Set of parameters supported by UPF for a given S-NSSAI
      type: object
      required:
        - sNssai
        - dnnUpfInfoList
      properties:
        sNssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
        dnnUpfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/DnnUpfInfoItem'
          minItems: 1
        redundantTransport:
          type: boolean
          default: false

    DnnUpfInfoItem:
      description: Set of parameters supported by UPF for a given DNN
      type: object
      required:
        - dnn
      properties:
        dnn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
        dnaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
          minItems: 1
        pduSessionTypes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType'
          minItems: 1
        ipv4AddressRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv4AddressRange'
          minItems: 1
        ipv6PrefixRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv6PrefixRange'
          minItems: 1
        dnaiNwInstanceList:
          description: >
            Map of network instance per DNAI for the DNN, where the key of the map is the DNAI.
            When present, the value of each entry of the map shall contain a N6 network instance
            that is configured for the DNAI indicated by the key.
          type: object
          additionalProperties:
            type: string
          minProperties: 1

    InterfaceUpfInfoItem:
      description: Information of a given IP interface of an UPF
      type: object
      required:
        - interfaceType
      properties:
        interfaceType:
          $ref: '#/components/schemas/UPInterfaceType'
        ipv4EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        endpointFqdn:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        networkInstance:
          type: string

    UPInterfaceType:
      description: Types of User-Plane interfaces of the UPF
      anyOf:
        - type: string
          enum:
            - N3
            - N6
            - N9
            - DATA_FORWARDING
            - N3MB
            - N6MB
            - N19MB
            - NMB9
        - type: string

    WAgfInfo:
      description: Information of the W-AGF end-points
      type: object
      properties:
        ipv4EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        endpointFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'

    TngfInfo:
      description: Infomation of the TNGF endpoints
      type: object
      properties:
        ipv4EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        endpointFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'

    PcfInfo:
      description: Information of a PCF NF Instance
      type: object
      properties:
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        dnnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
          minItems: 1
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        gpsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        rxDiamHost:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity'
        rxDiamRealm:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity'
        v2xSupportInd:
          type: boolean
          default: false
        proseSupportInd:
          type: boolean
          default: false
        proseCapability:
          $ref: '#/components/schemas/ProSeCapability'
        v2xCapability:
          $ref: '#/components/schemas/V2xCapability'

    BsfInfo:
      description: Information of a BSF NF Instance
      type: object
      properties:
        dnnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
          minItems: 1
        ipDomainList:
          type: array
          items:
            type: string
          minItems: 1
        ipv4AddressRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv4AddressRange'
          minItems: 1
        ipv6PrefixRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv6PrefixRange'
          minItems: 1
        rxDiamHost:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity'
        rxDiamRealm:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity'
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        gpsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1

    ChfInfo:
      description: Information of a CHF NF Instance
      type: object
      not:
        required: [ primaryChfInstance, secondaryChfInstance ]
      properties:
        supiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        gpsiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        plmnRangeList:
          type: array
          items:
            $ref: '#/components/schemas/PlmnRange'
          minItems: 1
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        primaryChfInstance:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
        secondaryChfInstance:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'

    Ipv4AddressRange:
      description: Range of IPv4 addresses
      type: object
      properties:
        start:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
        end:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'

    Ipv6PrefixRange:
      description: Range of IPv6 prefixes
      type: object
      properties:
        start:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
        end:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'

    DefaultNotificationSubscription:
      description: >
        Data structure for specifying the notifications the NF service subscribes by default,
        along with callback URI
      type: object
      required:
        - notificationType
        - callbackUri
      properties:
        notificationType:
          $ref: '#/components/schemas/NotificationType'
        callbackUri:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
        n1MessageClass:
          $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N1MessageClass'
        n2InformationClass:
          $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InformationClass'
        versions:
          type: array
          items:
            type: string
          minItems: 1
        binding:
          type: string
        acceptedEncoding:
          type: string
        supportedFeatures:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'

    NfSetCond:
      description: Subscription to a set of NFs based on their Set Id
      type: object
      required:
        - nfSetId
      properties:
        nfSetId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'

    NfServiceSetCond:
      description: Subscription to a set of NFs based on their Service Set Id
      type: object
      required:
        - nfServiceSetId
      properties:
        nfServiceSetId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId'
        nfSetId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'

    UpfCond:
      description: >
        Subscription to a set of NF Instances (UPFs), able to serve a certain service area
        (i.e. SMF serving area or TAI list)
      type: object
      required:
        - conditionType
      properties:
        conditionType:
          type: string
          enum: [ UPF_COND ]
        smfServingArea:
          type: array
          items:
            type: string
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1

    NwdafCond:
      description: >
        Subscription to a set of NF Instances (NWDAFs), identified by Analytics ID(s),
        S-NSSAI(s) or NWDAF Serving Area information, i.e. list of TAIs for which the NWDAF
        can provide analytics.
      type: object
      required:
        - conditionType
      properties:
        conditionType:
          type: string
          enum: [ NWDAF_COND ]
        analyticsIds:
          type: array
          items:
            type: string
          minItems: 1
        snssaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        servingNfTypeList:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1
        servingNfSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'
          minItems: 1
        mlAnalyticsList:
          type: array
          items:
            $ref: '#/components/schemas/MlAnalyticsInfo'
          minItems: 1

    NefCond:
      description: >
        Subscription to a set of NF Instances (NEFs), identified by Event ID(s) provided by AF,
        S-NSSAI(s), AF Instance ID, Application Identifier, External Identifier,
        External Group Identifier, or domain name.
      type: object
      required:
        - conditionType
      properties:
        conditionType:
          type: string
          enum: [ NEF_COND ]
        afEvents:
          type: array
          items:
            $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEvent'
          minItems: 1
        snssaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
          minItems: 1
        pfdData:
          $ref: '#/components/schemas/PfdData'
        gpsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        externalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        servedFqdnList:
          type: array
          items:
            type: string
          minItems: 1

    NotificationType:
      description: >
        Types of notifications used in Default Notification URIs in the NF Profile of an NF Instance
      anyOf:
        - type: string
          enum:
            - N1_MESSAGES
            - N2_INFORMATION
            - LOCATION_NOTIFICATION
            - DATA_REMOVAL_NOTIFICATION
            - DATA_CHANGE_NOTIFICATION
            - LOCATION_UPDATE_NOTIFICATION
            - NSSAA_REAUTH_NOTIFICATION
            - NSSAA_REVOC_NOTIFICATION
            - MATCH_INFO_NOTIFICATION
            - DATA_RESTORATION_NOTIFICATION
            - TSCTS_NOTIFICATION
        - type: string

    TransportProtocol:
      description: Types of transport protocol used in a given IP endpoint of an NF Service Instance
      anyOf:
        - type: string
          enum:
            - TCP
        - type: string

    NotificationEventType:
      description: Types of events sent in notifications from NRF to subscribed NF Instances
      anyOf:
        - type: string
          enum:
            - NF_REGISTERED
            - NF_DEREGISTERED
            - NF_PROFILE_CHANGED
        - type: string

    NotificationData:
      description: Data sent in notifications from NRF to subscribed NF Instances
      type: object
      required:
        - event
        - nfInstanceUri
      allOf:
        #
        # Condition: If 'event' takes value 'NF_PROFILE_CHANGED',
        # then either 'nfProfile' or 'profileChanges' (but not both) must be present
        #
        - anyOf:
          - not:
              properties:
                event:
                  type: string
                  enum:
                    - NF_PROFILE_CHANGED
          - oneOf:
              - required: [ nfProfile ]
              - required: [ profileChanges ]
        #
        # Condition: If 'event' takes value 'NF_REGISTERED',
        # then 'nfProfile' must be present
        #
        - anyOf:
          - not:
              properties:
                event:
                  type: string
                  enum:
                    - NF_REGISTERED
          - required: [ nfProfile ]
      properties:
        event:
          $ref: '#/components/schemas/NotificationEventType'
        nfInstanceUri:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri'
        nfProfile:
          allOf:
            - $ref: '#/components/schemas/NFProfile'
            - not:
                required: [ interPlmnFqdn ]
            - not:
                required: [ allowedPlmns ]
            - not:
                required: [ allowedSnpns ]
            - not:
                required: [ allowedNfTypes ]
            - not:
                required: [ allowedNfDomains ]
            - not:
                required: [ allowedNssais ]
            - properties:
                nfServices:
                  type: array
                  items:
                    allOf:
                      - $ref: '#/components/schemas/NFService'
                      - not:
                          required: [ interPlmnFqdn ]
                      - not:
                          required: [ allowedPlmns ]
                      - not:
                          required: [ allowedSnpns ]
                      - not:
                          required: [ allowedNfTypes ]
                      - not:
                          required: [ allowedNfDomains ]
                      - not:
                          required: [ allowedNssais ]
        profileChanges:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ChangeItem'
          minItems: 1
        conditionEvent:
          $ref: '#/components/schemas/ConditionEventType'
        subscriptionContext:
          $ref: '#/components/schemas/SubscriptionContext'

    NFStatus:
      description: Status of a given NF Instance stored in NRF
      anyOf:
        - type: string
          enum:
            - REGISTERED
            - SUSPENDED
            - UNDISCOVERABLE
        - type: string

    NFServiceVersion:
      description: Contains the version details of an NF service
      type: object
      required:
        - apiVersionInUri
        - apiFullVersion
      properties:
        apiVersionInUri:
          type: string
        apiFullVersion:
          type: string
        expiry:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime'

    ServiceName:
      description: Service names known to NRF
      anyOf:
        - type: string
          enum:
            - nnrf-nfm
            - nnrf-disc
            - nnrf-oauth2
            - nudm-sdm
            - nudm-uecm
            - nudm-ueau
            - nudm-ee
            - nudm-pp
            - nudm-niddau
            - nudm-mt
            - nudm-ssau
            - namf-comm
            - namf-evts
            - namf-mt
            - namf-loc
            - namf-mbs-comm
            - namf-mbs-bc
            - nsmf-pdusession
            - nsmf-event-exposure
            - nsmf-nidd
            - nausf-auth
            - nausf-sorprotection
            - nausf-upuprotection
            - nnef-pfdmanagement
            - nnef-smcontext
            - nnef-eventexposure
            - nnef-eas-deployment-info
            - 3gpp-cp-parameter-provisioning
            - 3gpp-device-triggering
            - 3gpp-bdt
            - 3gpp-traffic-influence
            - 3gpp-chargeable-party
            - 3gpp-as-session-with-qos
            - 3gpp-msisdn-less-mo-sms
            - 3gpp-service-parameter
            - 3gpp-monitoring-event
            - 3gpp-nidd-configuration-trigger
            - 3gpp-nidd
            - 3gpp-analyticsexposure
            - 3gpp-racs-parameter-provisioning
            - 3gpp-ecr-control
            - 3gpp-applying-bdt-policy
            - 3gpp-mo-lcs-notify
            - 3gpp-time-sync
            - 3gpp-am-influence
            - 3gpp-am-policyauthorization
            - 3gpp-akma
            - 3gpp-eas-deployment
            - 3gpp-iptvconfiguration
            - 3gpp-mbs-tmgi
            - 3gpp-mbs-session
            - 3gpp-authentication
            - 3gpp-asti
            - npcf-am-policy-control
            - npcf-smpolicycontrol
            - npcf-policyauthorization
            - npcf-bdtpolicycontrol
            - npcf-eventexposure
            - npcf-ue-policy-control
            - npcf-am-policyauthorization
            - nsmsf-sms
            - nnssf-nsselection
            - nnssf-nssaiavailability
            - nudr-dr
            - nudr-group-id-map
            - nlmf-loc
            - n5g-eir-eic
            - nbsf-management
            - nchf-spendinglimitcontrol
            - nchf-convergedcharging
            - nchf-offlineonlycharging
            - nnwdaf-eventssubscription
            - nnwdaf-analyticsinfo
            - nnwdaf-datamanagement
            - nnwdaf-mlmodelprovision
            - ngmlc-loc
            - nucmf-provisioning
            - nucmf-uecapabilitymanagement
            - nhss-sdm
            - nhss-uecm
            - nhss-ueau
            - nhss-ee
            - nhss-ims-sdm
            - nhss-ims-uecm
            - nhss-ims-ueau
            - nhss-gba-sdm
            - nhss-gba-ueau
            - nsepp-telescopic
            - nsoraf-sor
            - nspaf-secured-packet
            - nudsf-dr
            - nudsf-timer
            - nnssaaf-nssaa
            - nnssaaf-aiw
            - naanf-akma
            - n5gddnmf-discovery
            - nmfaf-3dadm
            - nmfaf-3cadm
            - neasdf-dnscontext
            - neasdf-baselinednspattern
            - ndccf-dm
            - ndccf-cm
            - nnsacf-nsac
            - nnsacf-slice-ee
            - nmbsmf-tmgi
            - nmbsmf-mbssession
            - nadrf-dm
            - nbsp-gba
            - ntsctsf-time-sync
            - ntsctsf-qos-tscai
            - ntsctsf-asti
            - npkmf-keyreq
            - nmnpf-npstatus
            - niwmsc-smservice
            - nmbsf-mbsuserserv
            - nmbsf-mbsuserdataing
            - nmbstf-distsession
        - type: string

    N2InterfaceAmfInfo:
      description: AMF N2 interface information
      type: object
      properties:
        ipv4EndpointAddress:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6EndpointAddress:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        amfName:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfName'

    NFServiceStatus:
      description: Status of a given NF Service Instance of an NF Instance stored in NRF
      anyOf:
        - type: string
          enum:
            - REGISTERED
            - SUSPENDED
            - UNDISCOVERABLE
        - type: string

    TaiRange:
      description: Range of TAIs (Tracking Area Identities)
      type: object
      required:
        - plmnId
        - tacRangeList
      properties:
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        tacRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TacRange'
          minItems: 1
        nid:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Nid'

    TacRange:
      description: Range of TACs (Tracking Area Codes)
      type: object
      properties:
        start:
          type: string
          pattern: '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'
        end:
          type: string
          pattern: '^([A-Fa-f0-9]{4}|[A-Fa-f0-9]{6})$'
        pattern:
          type: string

    PlmnRange:
      description: Range of PLMN IDs
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]{3}[0-9]{2,3}$'
        end:
          type: string
          pattern: '^[0-9]{3}[0-9]{2,3}$'
        pattern:
          type: string

    NrfInfo:
      description: Information of an NRF NF Instance, used in hierarchical NRF deployments
      type: object
      properties:
        servedUdrInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/UdrInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedUdrInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/UdrInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedUdmInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/UdmInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedUdmInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/UdmInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedAusfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/AusfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedAusfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/AusfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedAmfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/AmfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedAmfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/AmfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedSmfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/SmfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedSmfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/SmfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedUpfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/UpfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedUpfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/UpfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedPcfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/PcfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedPcfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/PcfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedBsfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/BsfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedBsfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/BsfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedChfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/ChfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedChfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/ChfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedNefInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/NefInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedNwdafInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/NwdafInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedNwdafInfoList:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            type: object
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            additionalProperties:
              $ref: '#/components/schemas/NwdafInfo'
            minProperties: 1
          minProperties: 1
        servedPcscfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/PcscfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedGmlcInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/GmlcInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedLmfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/LmfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedNfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            $ref: '#/components/schemas/NfInfo'
          minProperties: 1
        servedHssInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/HssInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedUdsfInfo:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/UdsfInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedUdsfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/UdsfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedScpInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/ScpInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedSeppInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/SeppInfo'
              - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
          minProperties: 1
        servedAanfInfoList:
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/AanfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
        served5gDdnmfInfo:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/5GDdnmfInfo'
          minProperties: 1
        servedMfafInfoList:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            $ref: '#/components/schemas/MfafInfo'
          minProperties: 1
        servedEasdfInfoList:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            type: object
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            additionalProperties:
              $ref: '#/components/schemas/EasdfInfo'
            minProperties: 1
        servedDccfInfoList:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            $ref: '#/components/schemas/DccfInfo'
          minProperties: 1
        servedMbSmfInfoList:
          description: A map (list of key-value pairs) where nfInstanceId serves as key
          type: object
          additionalProperties:
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            type: object
            additionalProperties:
              anyOf:
                - $ref: '#/components/schemas/MbSmfInfo'
                - $ref: 'TS29571_CommonData.yaml#/components/schemas/EmptyObject'
            minProperties: 1
          minProperties: 1
        servedTsctsfInfoList:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            type: object
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            additionalProperties:
              $ref: '#/components/schemas/TsctsfInfo'
            minProperties: 1
          minProperties: 1
        servedMbUpfInfoList:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            type: object
            description: A map (list of key-value pairs) where a valid JSON string serves as key
            additionalProperties:
              $ref: '#/components/schemas/MbUpfInfo'
            minProperties: 1
          minProperties: 1
        servedTrustAfInfo:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            $ref: '#/components/schemas/TrustAfInfo'
          minProperties: 1
        servedNssaafInfo:
          type: object
          description: A map (list of key-value pairs) where NF Instance Id serves as key
          additionalProperties:
            $ref: '#/components/schemas/NssaafInfo'
          minProperties: 1

    PlmnSnssai:
      description: List of network slices (S-NSSAIs) for a given PLMN ID
      type: object
      required:
        - plmnId
        - sNssaiList
      properties:
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        sNssaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
          minItems: 1
        nid:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Nid'

    NefInfo:
      description: Information of an NEF NF Instance
      type: object
      properties:
        nefId:
          $ref: '#/components/schemas/NefId'
        pfdData:
          $ref: '#/components/schemas/PfdData'
        afEeData:
          $ref: '#/components/schemas/AfEventExposureData'
        gpsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        externalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        servedFqdnList:
          type: array
          items:
            type: string
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        dnaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
          minItems: 1
        unTrustAfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/UnTrustAfInfo'
          minItems: 1
        uasNfFunctionalityInd:
          type: boolean
          default: false

    PfdData:
      description: List of Application IDs and/or AF IDs managed by a given NEF Instance
      type: object
      properties:
        appIds:
          type: array
          items:
            type: string
          minItems: 1
        afIds:
          type: array
          items:
            type: string
          minItems: 1

    NwdafInfo:
      description: Information of a NWDAF NF Instance
      type: object
      properties:
        eventIds:
          type: array
          items:
            $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/EventId'
          minItems: 1
        nwdafEvents:
          type: array
          items:
            $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        nwdafCapability:
          $ref: '#/components/schemas/NwdafCapability'
        analyticsDelay:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec'
        servingNfSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'
          minItems: 1
        servingNfTypeList:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1
        mlAnalyticsList:
          type: array
          items:
            $ref: '#/components/schemas/MlAnalyticsInfo'
          minItems: 1

    LmfInfo:
      description: Information of an LMF NF Instance
      type: object
      properties:
        servingClientTypes:
          type: array
          items:
            $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/ExternalClientType'
          minItems: 1
        lmfId:
          $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification'
        servingAccessTypes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType'
          minItems: 1
        servingAnNodeTypes:
          type: array
          items:
            $ref: '#/components/schemas/AnNodeType'
          minItems: 1
        servingRatTypes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        supportedGADShapes:
          type: array
          items:
            $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/SupportedGADShapes'
          minItems: 1

    GmlcInfo:
      description: Information of a GMLC NF Instance
      type: object
      properties:
        servingClientTypes:
          type: array
          items:
            $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/ExternalClientType'
          minItems: 1
        gmlcNumbers:
          type: array
          items:
            type: string
            pattern: '^[0-9]{5,15}$'
          minItems: 1

    AfEventExposureData:
      description: AF Event Exposure data managed by a given NEF Instance
      type: object
      required:
        - afEvents
      properties:
        afEvents:
          type: array
          items:
            $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEvent'
          minItems: 1
        afIds:
          type: array
          items:
            type: string
          minItems: 1
        appIds:
          type: array
          items:
            type: string
          minItems: 1

    PcscfInfo:
      description: Information of a P-CSCF NF Instance
      type: object
      properties:
        accessType:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType'
          minItems: 1
        dnnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
          minItems: 1
        gmFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        gmIpv4Addresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        gmIpv6Addresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        mwFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        mwIpv4Addresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        mwIpv6Addresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        servedIpv4AddressRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv4AddressRange'
          minItems: 1
        servedIpv6PrefixRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv6PrefixRange'
          minItems: 1

    NfInfo:
      description: Information of a generic NF Instance
      type: object
      properties:
        nfType:
          $ref: '#/components/schemas/NFType'

    HssInfo:
      description: Information of an HSS NF Instance
      type: object
      properties:
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        imsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/ImsiRange'
          minItems: 1
        imsPrivateIdentityRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        imsPublicIdentityRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        msisdnRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        externalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        hssDiameterAddress:
          $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/NetworkNodeDiameterAddress'

    ImsiRange:
      description: >
        A range of IMSIs (subscriber identities), either based on a numeric range,
        or based on regular-expression matching
      type: object
      properties:
        start:
          type: string
          pattern: '^[0-9]+$'
        end:
          type: string
          pattern: '^[0-9]+$'
        pattern:
          type: string

    TwifInfo:
      description: Addressing information (IP addresses, FQDN) of the TWIF
      type: object
      properties:
        ipv4EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6EndpointAddresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr'
          minItems: 1
        endpointFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'

    VendorId:
      description: Vendor ID of the NF Service instance (Private Enterprise Number assigned by IANA)
      type: string
      pattern: '^[0-9]{6}$'

    VendorSpecificFeature:
      description: Information about a vendor-specific feature
      type: object
      required:
        - featureName
        - featureVersion
      properties:
        featureName:
          type: string
        featureVersion:
          type: string

    AnNodeType:
      description: Access Network Node Type (gNB, ng-eNB...)
      anyOf:
        - type: string
          enum:
            - GNB
            - NG_ENB
        - type: string

    UdsfInfo:
      description: Information related to UDSF
      type: object
      properties:
        groupId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId'
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        storageIdRanges:
          description: >
            A map (list of key-value pairs) where realmId serves as key and each value in the map
            is an array of IdentityRanges. Each IdentityRange is a range of storageIds.
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/IdentityRange'
            minItems: 1
          minProperties: 1

    ScpInfo:
      description: Information of an SCP Instance
      type: object
      properties:
        scpDomainInfoList:
          description: >
            A map (list of key-value pairs) where the key of the map shall be the string
            identifying an SCP domain
          type: object
          additionalProperties:
            $ref: '#/components/schemas/ScpDomainInfo'
          minProperties: 1
        scpPrefix:
          type: string
        scpPorts:
          description: >
            Port numbers for HTTP and HTTPS. The key of the map shall be "http" or "https".
          type: object
          additionalProperties:
            type: integer
            minimum: 0
            maximum: 65535
          minProperties: 1
        addressDomains:
          type: array
          items:
            type: string
          minItems: 1
        ipv4Addresses:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr'
          minItems: 1
        ipv6Prefixes:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix'
          minItems: 1
        ipv4AddrRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv4AddressRange'
          minItems: 1
        ipv6PrefixRanges:
          type: array
          items:
            $ref: '#/components/schemas/Ipv6PrefixRange'
          minItems: 1
        servedNfSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'
          minItems: 1
        remotePlmnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1
        remoteSnpnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
          minItems: 1
        ipReachability:
          $ref: '#/components/schemas/IpReachability'
        scpCapabilities:
          type: array
          items:
            $ref: '#/components/schemas/ScpCapability'

    ScpDomainInfo:
      description: SCP Domain specific information
      type: object
      properties:
        scpFqdn:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn'
        scpIpEndPoints:
          type: array
          items:
            $ref: '#/components/schemas/IpEndPoint'
          minItems: 1
        scpPrefix:
          type: string
        scpPorts:
          description: >
            Port numbers for HTTP and HTTPS. The key of the map shall be "http" or "https".
          type: object
          additionalProperties:
            type: integer
            minimum: 0
            maximum: 65535
          minProperties: 1

    ScpDomainCond:
      description: >
        Subscription to a set of NF or SCP or SEPP instances belonging to certain SCP domains
      type: object
      required:
        - scpDomains
      properties:
        scpDomains:
          type: array
          items:
            type: string
          minItems: 1
        nfTypeList:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1

    OptionsResponse:
      description: Communication options of the NRF sent in response payload of OPTIONS method
      type: object
      properties:
        supportedFeatures:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'

    ConditionEventType:
      description: >
        Indicates whether a notification is due to the NF Instance to start or stop
        being part of a condition for a subscription to a set of NFs
      anyOf:
        - type: string
          enum:
            - NF_ADDED
            - NF_REMOVED
        - type: string

    SuciInfo:
      description: SUCI information containing Routing Indicator and Home Network Public Key ID
      type: object
      properties:
        routingInds:
          type: array
          items:
            type: string
            pattern: '^[0-9]{1,4}$'
          minItems: 1
        hNwPubKeyIds:
          type: array
          items:
            type: integer
          minItems: 1

    SeppInfo:
      description: Information of a SEPP Instance
      type: object
      properties:
        seppPorts:
          description: >
            Port numbers for HTTP and HTTPS. The key of the map shall be "http" or "https".
          type: object
          additionalProperties:
            type: integer
            minimum: 0
            maximum: 65535
          minProperties: 1
        remotePlmnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1
        remoteSnpnList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
          minItems: 1

    IpReachability:
      description: Indicates the type(s) of IP addresses reachable via an SCP
      anyOf:
        - type: string
          enum:
            - IPV4
            - IPV6
            - IPV4V6
        - type: string

    UriList:
      description: >
        Represents a set of URIs following the 3GPP hypermedia format
        (containing a "_links" attribute).
      type: object
      properties:
        _links:
          type: object
          description: >
            List of the URI of NF instances. It has two members whose names are item and self.
            The item attribute contains an array of URIs.
          additionalProperties:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema'
          minProperties: 1
        totalItemCount:
          type: integer

    AanfInfo:
      description: Represents the information relative to an AAnF NF Instance.
      type: object
      properties:
        routingIndicators:
          type: array
          items:
            type: string
            pattern: '^[0-9]{1,4}$'
          minItems: 1

    5GDdnmfInfo:
      description: Information of an 5G DDNMF NF Instance
      type: object
      required:
        - plmnId
      properties:
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'

    WildcardDnai:
      description: Wildcard DNAI
      type: string
      pattern: '^[*]$'

    MfafInfo:
      description: Information of a MFAF NF Instance
      type: object
      properties:
        servingNfTypeList:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1
        servingNfSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1

    NwdafCapability:
      description: Indicates the capability supported by the NWDAF
      type: object
      properties:
        analyticsAggregation:
          type: boolean
          default: false
        analyticsMetadataProvisioning:
          type: boolean
          default: false

    EasdfInfo:
      description: Information of an EASDF NF Instance
      type: object
      properties:
        sNssaiEasdfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/SnssaiEasdfInfoItem'
          minItems: 1
        easdfN6IpAddressList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr'
          minItems: 1
        upfN6IpAddressList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr'
          minItems: 1

    SnssaiEasdfInfoItem:
      description: Set of parameters supported by EASDF for a given S-NSSAI
      type: object
      required:
        - sNssai
        - dnnEasdfInfoList
      properties:
        sNssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
        dnnEasdfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/DnnEasdfInfoItem'
          minItems: 1

    DnnEasdfInfoItem:
      description: Set of parameters supported by EASDF for a given DNN
      type: object
      required:
        - dnn
      properties:
        dnn:
          anyOf:
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn'
        dnaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
          minItems: 1

    DccfInfo:
      description: Information of a DCCF NF Instance
      type: object
      properties:
        servingNfTypeList:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1
        servingNfSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1

    ScpCapability:
      description: Indicates the capabilities supported by an SCP
      anyOf:
        - type: string
          enum:
            - INDIRECT_COM_WITH_DELEG_DISC
        - type: string

    NsacfInfo:
      description: Information of a NSACF NF Instance
      type: object
      required:
        - nsacfCapability
      properties:
        nsacfCapability:
          $ref: '#/components/schemas/NsacfCapability'
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1

    NsacfCapability:
      description: >
        NSACF service capabilities (e.g. to monitor and control the number of registered UEs
        or established PDU sessions per network slice)
      type: object
      properties:
        supportUeSAC:
          description: |
            Indicates the service capability of the NSACF to monitor and control the number of
            registered UEs per network slice for the network slice that is subject to NSAC  
            true: Supported  
            false (default): Not Supported
          type: boolean
          default: false
        supportPduSAC:
          description: |
            Indicates the service capability of the NSACF to monitor and control the number of
            established PDU sessions per network slice for the network slice that is subject to NSAC  
            true: Supported  
            false (default): Not Supported
          type: boolean
          default: false

    DccfCond:
      description: >
        Subscription to a set of NF Instances (DCCFs), identified by NF types, NF Set Id(s)
        or DCCF Serving Area information, i.e. list of TAIs served by the DCCF
      type: object
      required:
        - conditionType
      properties:
        conditionType:
          type: string
          enum: [ DCCF_COND ]
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        servingNfTypeList:
          type: array
          items:
            $ref: '#/components/schemas/NFType'
          minItems: 1
        servingNfSetIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId'
          minItems: 1

    MlAnalyticsInfo:
      description: ML Analytics Filter information supported by the Nnwdaf_MLModelProvision service
      type: object
      properties:
        mlAnalyticsIds:
          type: array
          items:
            $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent'
          minItems: 1
        snssaiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai'
          minItems: 1
        trackingAreaList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1

    MbSmfInfo:
      description: Information of an MB-SMF NF Instance
      type: object
      properties:
        sNssaiInfoList:
          description: A map (list of key-value pairs) where a valid JSON string serves as key
          additionalProperties:
            $ref: '#/components/schemas/SnssaiMbSmfInfoItem'
          minProperties: 1
        tmgiRangeList:
          description: A map (list of key-value pairs) where a valid JSON string serves as key
          additionalProperties:
            $ref: '#/components/schemas/TmgiRange'
          minProperties: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        mbsSessionList:
          description: A map (list of key-value pairs) where a valid JSON string serves as key
          additionalProperties:
            $ref: '#/components/schemas/MbsSession'
          minProperties: 1

    TmgiRange:
      description: Range of TMGIs
      type: object
      required:
        - mbsServiceIdStart
        - mbsServiceIdEnd
        - plmnId
      properties:
        mbsServiceIdStart:
          type: string
          pattern: '^[A-Fa-f0-9]{6}$'
        mbsServiceIdEnd:
          type: string
          pattern: '^[A-Fa-f0-9]{6}$'
        plmnId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
        nid:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/Nid'

    MbsSession:
      description: MBS Session currently served by an MB-SMF
      type: object
      required:
        - mbsSessionId
      properties:
        mbsSessionId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId'
        mbsAreaSessions:
          description: A map (list of key-value pairs) where the key identifies an areaSessionId
          additionalProperties:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceAreaInfo'
          minProperties: 1

    SnssaiMbSmfInfoItem:
      description: Parameters supported by an MB-SMF for a given S-NSSAI
      type: object
      required:
        - sNssai
        - dnnInfoList
      properties:
        sNssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
        dnnInfoList:
          type: array
          items:
            $ref: '#/components/schemas/DnnMbSmfInfoItem'
          minItems: 1

    DnnMbSmfInfoItem:
      description: Parameters supported by an MB-SMF for a given DNN
      type: object
      required:
        - dnn
      properties:
        dnn:
          anyOf:
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn'

    TsctsfInfo:
      description: Information of a TSCTSF NF Instance
      type: object
      properties:
        sNssaiInfoList:
          description: A map (list of key-value pairs) where a valid JSON string serves as key
          additionalProperties:
            $ref: '#/components/schemas/SnssaiTsctsfInfoItem'
          minProperties: 1
        externalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        gpsiRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        internalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/InternalGroupIdRange'
          minItems: 1

    SnssaiTsctsfInfoItem:
      description: Set of parameters supported by TSCTSF for a given S-NSSAI
      type: object
      required:
        - sNssai
        - dnnInfoList
      properties:
        sNssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
        dnnInfoList:
          type: array
          items:
            $ref: '#/components/schemas/DnnTsctsfInfoItem'
          minItems: 1

    DnnTsctsfInfoItem:
      description: Parameters supported by an TSCTSF for a given DNN
      type: object
      required:
        - dnn
      properties:
        dnn:
          anyOf:
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn'

    MbUpfInfo:
      description: Information of an MB-UPF NF Instance
      type: object
      required:
        - sNssaiMbUpfInfoList
      properties:
        sNssaiMbUpfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/SnssaiUpfInfoItem'
          minItems: 1
        mbSmfServingArea:
          type: array
          items:
            type: string
          minItems: 1
        interfaceMbUpfInfoList:
          type: array
          items:
            $ref: '#/components/schemas/InterfaceUpfInfoItem'
          minItems: 1
        taiList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        priority:
          type: integer
          minimum: 0
          maximum: 65535
        supportedPfcpFeatures:
          type: string

    UnTrustAfInfo:
      description: Information of a untrusted AF Instance
      type: object
      required:
        - afId
      properties:
        afId:
          type: string
        sNssaiInfoList:
          type: array
          items:
            $ref: '#/components/schemas/SnssaiInfoItem'
          minItems: 1
        mappingInd:
          type: boolean
          default: false

    TrustAfInfo:
      description: Information of a trusted AF Instance
      type: object
      properties:
        sNssaiInfoList:
          type: array
          items:
            $ref: '#/components/schemas/SnssaiInfoItem'
          minItems: 1
        afEvents:
          type: array
          items:
            $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEvent'
          minItems: 1
        appIds:
          type: array
          items:
            type: string
          minItems: 1
        internalGroupId:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId'
          minItems: 1
        mappingInd:
          type: boolean
          default: false

    SnssaiInfoItem:
      description: >
        Parameters supported by an NF for a given S-NSSAI Set of parameters supported by NF
        for a given S-NSSAI
      type: object
      required:
        - sNssai
        - dnnInfoList
      properties:
        sNssai:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai'
        dnnInfoList:
          type: array
          items:
            $ref: '#/components/schemas/DnnInfoItem'
          minItems: 1

    DnnInfoItem:
      description: Set of parameters supported by NF for a given DNN
      type: object
      required:
        - dnn
      properties:
        dnn:
          anyOf:
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn'
            - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn'

    CollocatedNfInstance:
      description: Information of an collocated NF Instance registered in the NRF
      type: object
      required:
        - nfInstanceId
        - nfType
      properties:
        nfInstanceId:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId'
        nfType:
          $ref: '#/components/schemas/CollocatedNfType'

    CollocatedNfType:
      description: NF types for a collocated NF
      anyOf:
        - type: string
          enum:
            - UPF
            - SMF
            - MB_UPF
            - MB_SMF
        - type: string

    PlmnOauth2:
      description: Oauth2.0 required indication for a given PLMN ID
      type: object
      properties:
        oauth2RequiredPlmnIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1
        oauth2NotRequiredPlmnIdList:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId'
          minItems: 1

    V2xCapability:
      description: Indicate the supported V2X Capability by the PCF.
      type: object
      properties:
        lteV2x:
          type: boolean
          default: false
        nrV2x:
          type: boolean
          default: false

    NssaafInfo:
      description: Information of a NSSAAF Instance
      type: object
      properties:
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        internalGroupIdentifiersRanges:
          type: array
          items:
            $ref: '#/components/schemas/InternalGroupIdRange'
          minItems: 1

    ProSeCapability:
      description: Indicate the supported ProSe Capability by the PCF.
      type: object
      properties:
        proseDirectDiscovey:
          type: boolean
          default: false
        proseDirectCommunication:
          type: boolean
          default: false
        proseL2UetoNetworkRelay:
          type: boolean
          default: false
        proseL3UetoNetworkRelay:
          type: boolean
          default: false
        proseL2RemoteUe:
          type: boolean
          default: false
        proseL3RemoteUe:
          type: boolean
          default: false

    SubscriptionContext:
      description: >
        Context data related to a created subscription, to be included in notifications sent by NRF
      type: object
      required:
        - subscriptionId
      properties:
        subscriptionId:
          type: string
        subscrCond:
          $ref: '#/components/schemas/SubscrCond'

    IwmscInfo:
      description: Information of an SMS-IWMSC NF Instance
      type: object
      properties:
        msisdnRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
        supiRanges:
          type: array
          items:
            $ref: '#/components/schemas/SupiRange'
          minItems: 1
        taiRangeList:
          type: array
          items:
            $ref: '#/components/schemas/TaiRange'
          minItems: 1
        scNumber:
          type: string
          pattern: '^[0-9]{5,15}$'

    MnpfInfo:
      description: Information of an MNPF Instance
      type: object
      properties:
        msisdnRanges:
          type: array
          items:
            $ref: '#/components/schemas/IdentityRange'
          minItems: 1
      required:
        - msisdnRanges
