3GPP TS 28.105 Ai Ml Nrm API

OAS 3.0.1 specification of the AI/ML NRM. An OpenAPI 3.0.1 data-model-only document (no paths; it defines the schemas/Network Resource Model consumed by the Provisioning and Performance management services), API version 19.5.0, published verbatim by 3GPP in 3GPP TS 28.105 as part of the Management Services (SA5 OAM) suite and mirrored in the public 3GPP Forge GitLab repository.

OpenAPI Specification

3gpp-ts28105-aimlnrm.yml Raw ↑
openapi: 3.0.1
info:
  title: AI/ML NRM
  version: 19.5.0
  description: >-
    OAS 3.0.1 specification of the AI/ML NRM
    © 2026, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).
    All rights reserved.
externalDocs:
  description: 3GPP TS 28.105; AI/ML Management
  url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.105/
paths: {}
components:
  schemas:

#-------- Definition of types-----------------------------------------------------

    MLContext:
      type: object
      properties:
        inferenceEntityRef:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
        dataProviderRef:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'

    RequestStatus:
      type: string
      readOnly: true
      enum:
        - NOT_STARTED
        - IN_PROGRESS
        - SUSPENDED
        - FINISHED
        - CANCELLED
        - CANCELLING

    ModelPerformance:
      type: object
      properties:
        inferenceOutputName:
          type: string
        performanceMetric:
          type: string
        performanceScore:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float'
        decisionConfidenceScore:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float'         

    ProcessMonitor:
      description: >-
        This data type is the "ProcessMonitor" data type defined in “genericNrm.yaml” 
        with specialisations for usage in TS 28.105.
      type: object
      properties:
        status:
          type: string
        progressPercentage:
          type: integer
          minimum: 0
          maximum: 100
        progressStateInfo:
          type: string
        resultStateInfo:
          type: string

    AIMLManagementPolicy:
      description: >-
              This data type represents the properties of a policy for AI/ML management.
      type: object
      properties:
        thresholdList:
          type: array
          uniqueItems: true
          items:
            $ref: 'TS28623_ThresholdMonitorNrm.yaml#/components/schemas/ThresholdInfo'
        managedActivationScope:
          $ref: '#/components/schemas/ManagedActivationScope'
          
    SupportedPerfIndicator:
      type: object
      properties:
        performanceIndicatorName:
          type: string
          readOnly: true
        isSupportedForTraining:
          type: boolean
          readOnly: true
          default: FALSE
        isSupportedForTesting:
          type: boolean
          readOnly: true
          default: FALSE

    ManagedActivationScope:
      oneOf:
        - type: object
          properties:
            dNList:
              type: array
              uniqueItems: true
              items:
                $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn'
        - type: object
          properties:
            timeWindow:
              type: array
              uniqueItems: true
              items:
                $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow'
        - type: object
          properties:
            geoPolygon:
              type: array
              uniqueItems: true
              items:
                $ref: 'TS28623_ComDefs.yaml#/components/schemas/GeoArea'
                
    MLCapabilityInfo:
      type: object
      properties:
        aIMLInferenceName:
          $ref: '#/components/schemas/AIMLInferenceName'
        capabilityName:
          type: string
          readOnly: true 
        mLCapabilityParameters:
          description: A map (list of key-value pairs) for an aIMLInferenceName and capabilityName
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet'

    AvailMLCapabilityReport:
      type: object
      properties:
        availMLCapabilityReportID:
          type: string
          readOnly: true
        mLCapabilityVersionId:
          type: array
          uniqueItems: true
          items:
            type: string
            readOnly: true
        expectedPerformanceGains:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ModelPerformance'
        mLModelRef:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'

    InferenceOutput:
      type: object
      properties:
        inferenceOutputId:
          type: array
          uniqueItems: true
          items:
            type: string
            readOnly: true
        aIMLInferenceName:
          $ref: '#/components/schemas/AIMLInferenceName'
          readOnly: true
        inferenceOutputTime:
          type: array
          uniqueItems: true
          items:
            $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTimeRo'
          # FIXME, isOrder/isUnique both as True
        inferencePerformance:
          $ref: '#/components/schemas/ModelPerformance'
        inferenceExplanationInfo:
          type: array
          uniqueItems: true
          items:
            type: string          
        outputResult:
          description: A map (list of key-value pairs) for Inference result name and it's value
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet'
    AIMLInferenceName:
      oneOf:
        - $ref: 'TS28104_MdaNrm.yaml#/components/schemas/MDAType'
        - $ref: '#/components/schemas/NwdafAnalyticsType'
        - $ref: '#/components/schemas/NgRanInferenceType'
        - $ref: '#/components/schemas/VSExtensionType' 
    NwdafAnalyticsType:
      $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent'
    NgRanInferenceType:
      type: string
      enum:
        - NG_RAN_NETWORK_ENERGY_SAVING
        - NG_RAN_LOAD_BALANCING
        - NG_RAN_MOBILITY_OPTIMIZATION
    VSExtensionType:
      type: string
    DataStatisticalProperties:
      type: object
      properties:
        uniformlyDistributedTrainingData:
          type: boolean
          default: FALSE
        trainingDataWithOrWithoutOutliers:
          type: boolean
          default: FALSE
    DistributedTrainingExpectation:
      type: object
      properties:
        expectedTrainingTime:
          type: integer
        dataSplitIndication:
          type: boolean
          default: FALSE
        suggestedTrainingNodeList:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList'
    PotentialImpactInfo:
      type: object
      properties:
        impactedScope:
          $ref: '#/components/schemas/ManagedActivationScope'
        impactedPM:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ImpactedPM'            
    ImpactedPM:
      type: object
      properties:
        pMIdentifier:
          type: string
          readOnly: true
    
    MLKnowledge:
      type: object
      properties:
        mLKnowledgeName:
          type: string
          readOnly: true
        knowledgeType:
          type: string
          enum:
            - TABLE
            - STATISTIC
            - REGRESSION
          readOnly: true
        predictorResponseArray: 
          # array of pair <String, String>
          type: array
          description: Array of pair <String, String>
          uniqueItems: true
          items:
            type: array
            description: Array of pair <String, String>
            minItems: 2
            maxItems: 2
            items:
              type: string
    
    EnvironmentScope:
      oneOf:
        #Choice_1.1 managedEntitiesScope
        - type: object
          properties:
            managedEntitiesScope:
              $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList'
        #Choice_1.2 areaScope
        - type: object
          properties:
            areaScope:
              $ref: 'TS28623_ComDefs.yaml#/components/schemas/GeoArea'
            #Choice 2 timeWindow
        - type: object
          properties:
            timeWindow:
             $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow'
       #todo: stage 2 attribute definition missing
   
    SupportedLearningTechnology:
      type: object
      properties:
        learningTechnologyName:
          type: array
          uniqueItems: true
          items:          
            type: string
            enum:
              - RL
              - FL
              - DL
            readOnly: true
        supportedRLEnvironment:
          description: Included when RL is supported.
          type: array
          uniqueItems: true
          items:          
            type: string
            enum:
              - SIMULATION_ENVIRONMENTS
              - REAL_NETWORK_ENVIRONMENTS
            readOnly: true
        supportedFLRole:
          description: Included when FL is supported.
          type: array
          uniqueItems: true
          items:
            type: string
            enum: [FL_SERVER, FL_CLIENT]
          minItems: 1
          maxItems: 2
          readOnly: true
        supportedInferenceNameList:
          description: Types of inference the training technologies can be applied to.
          type: array
          uniqueItems: true
          items: 
            $ref: '#/components/schemas/AIMLInferenceName'
          minItems: 1
          readOnly: true
    
    RLRequirement:
      type: object
      properties:
        rLEnvironmentType:
          type: array
          uniqueItems: true
          items:          
            type: string
            enum:
              - SIMULATION_ENVIRONMENTS
              - REAL_NETWORK_ENVIRONMENTS
    
        rLEnvironmentScope:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/EnvironmentScope'
          minItems: 1
    
        rLImpactedScope:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/EnvironmentScope'
          minItems: 1
    
        rLPerformanceRequirements:
          type: array
          uniqueItems: true
          items:
            $ref: 'TS28623_ThresholdMonitorNrm.yaml#/components/schemas/ThresholdInfo'
    
    ClusteringCriteria:
      type: object
      properties:
        performanceMetric:
          type: string
        taskType:
          type: string
        allowedClusterTrainingTime:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow'
          minItems: 1
          maxItems: 1
        preferredModelDiversity:
          type: string
    
    FLParticipationInfo:
      type: object
      additionalProperties: false
      properties:
        fLRole:
          type: string
          enum: [FL_SERVER, FL_CLIENT]
          readOnly: true
        isAvailableForFLTraining:
          type: boolean
          default: FALSE
          readOnly: true
        candidateFLClientRefList:
          description: >
            List of MLTrainingFunction DNs capable of acting as FL clients.
            Applicable when fLRole = FL_SERVER.
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo' 
    
    FLRequirement:
      type: object
      additionalProperties: false
      properties:
        fLClientSelectionCriteria:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/FLClientSelectionCriteria'
          minItems: 1
    
    FLClientSelectionCriteria:
      type: object
      additionalProperties: false
      properties:
        minimumAvailableDataSamples:
          type: integer
        minimumAvailableTimeDuration:
          type: integer
          description: Minutes
        minimumInterimModelPerformance:
          type: array
          uniqueItems: true
          items:
            $ref: '#/components/schemas/ModelPerformance'
        servingGeoArea:
          type: array
          uniqueItems: true
          items:
            $ref: 'TS28623_ComDefs.yaml#/components/schemas/GeoArea'
        clientRedundancy:
          type: boolean
        trainingDataWithOrWithoutOutliers:
          type: boolean
          default: FALSE
        uniformlyDistributedTrainingData:
          type: boolean
          default: FALSE
      required:
        - minimumAvailableDataSamples
        - minimumAvailableTimeDuration     
    
    FLReportPerClient:
      type: object
      additionalProperties: false
      properties:
        clientRef:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
        numberOfDataSamplesUsed:
          type: integer
        trainingTimeDuration:
          $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow'
        modelPerformanceOnClient:
          type: array
          items:
            $ref: '#/components/schemas/ModelPerformance'     

#-------- Definition of types for name-containments ------
    SubNetwork-ncO-AiMlNrm:
      type: object
      properties:
        MLTrainingFunction:
          $ref: '#/components/schemas/MLTrainingFunction-Multiple'
        MLTestingFunction:
          $ref: '#/components/schemas/MLTestingFunction-Multiple'
        MLModelRepository:
          $ref: '#/components/schemas/MLModelRepository-Multiple'
        MLUpdateFunction:
          $ref: '#/components/schemas/MLUpdateFunction-Multiple'
        AIMLInferenceFunction:
          $ref: '#/components/schemas/AIMLInferenceFunction-Multiple'
        AIMLInferenceEmulationFunction:
          $ref: '#/components/schemas/AIMLInferenceEmulationFunction-Multiple'  

    ManagedElement-ncO-AiMlNrm:
      type: object
      properties:
        MLTrainingFunction:
          $ref: '#/components/schemas/MLTrainingFunction-Multiple'
        MLTestingFunction:
          $ref: '#/components/schemas/MLTestingFunction-Multiple'
        MLModelRepository:
          $ref: '#/components/schemas/MLModelRepository-Multiple'
        MLUpdateFunction:
          $ref: '#/components/schemas/MLUpdateFunction-Multiple'
        AIMLInferenceFunction:
          $ref: '#/components/schemas/AIMLInferenceFunction-Multiple'
        AIMLInferenceEmulationFunction:
          $ref: '#/components/schemas/AIMLInferenceEmulationFunction-Multiple'
          
#-------- Definition of concrete IOCs --------------------------------------------

    MLTrainingFunction-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-Attr'
                - type: object
                  properties:
                    supportedLearningTechnology:
                      $ref: '#/components/schemas/SupportedLearningTechnology'
                    fLParticipationInfo:
                      $ref:  '#/components/schemas/FLParticipationInfo'
                    mLKnowledge:
                      $ref: '#/components/schemas/MLKnowledge'
                    mLTrainingType:
                      type: string
                      enum:
                        - INITIAL_TRAINING
                        - PRE_SPECIALISED_TRAINING
                        - RE_TRAINING
                        - FINE_TUNING
                      readOnly: true
                    mLModelRepositoryRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO'
        - type: object
          properties:
            MLTrainingRequest:
              $ref: '#/components/schemas/MLTrainingRequest-Multiple'
            MLTrainingProcess:
              $ref: '#/components/schemas/MLTrainingProcess-Multiple'
            MLTrainingReport:
              $ref: '#/components/schemas/MLTrainingReport-Multiple'
            ThresholdMonitors:
              $ref: 'TS28623_ThresholdMonitorNrm.yaml#/components/schemas/ThresholdMonitor-Multiple'
            MLTestingRequest:
              $ref: '#/components/schemas/MLTestingRequest-Multiple'
            MLTestingReport:
              $ref: '#/components/schemas/MLTestingReport-Multiple'

    MLTrainingRequest-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    aIMLInferenceName:
                      $ref: '#/components/schemas/AIMLInferenceName' 
                    fLRequirement:
                      $ref: '#/components/schemas/FLRequirement'
                    candidateTrainingDataSource:
                      type: array
                      uniqueItems: true
                      items:
                        type: string
                    trainingDataQualityScore:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float'
                    trainingRequestSource:
                      oneOf:
                      - type: string
                      - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn'
                    requestStatus:
                      $ref: '#/components/schemas/RequestStatus'
                    performanceRequirements:
                      type: array
                      uniqueItems: true
                      items:
                        $ref: '#/components/schemas/ModelPerformance'
                    rLRequirement:
                      $ref: '#/components/schemas/RLRequirement'
                    cancelRequest:
                      type: boolean
                    suspendRequest:
                      type: boolean
                    trainingDataStatisticalProperties:
                      $ref: '#/components/schemas/DataStatisticalProperties'
                    distributedTrainingExpectation:
                      $ref: '#/components/schemas/DistributedTrainingExpectation'
                    mLKnowledgeName:
                      type: string
                    mLTrainingType:
                      type: string
                      enum:
                        - INITIAL_TRAINING
                        - PRE_SPECIALISED_TRAINING
                        - RE_TRAINING
                        - FINE_TUNING
                    expectedInferenceScope:
                      type: array
                      uniqueItems: true
                      items: 
                        $ref: '#/components/schemas/AIMLInferenceName'
                    clusteringInfo:
                      type: array
                      uniqueItems: true
                      items:
                        $ref: '#/components/schemas/ClusteringCriteria'                  
                    mLModelRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn'
                    mLModelCoordinationGroupRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn'

    MLTrainingProcess-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    priority:
                      type: integer
                      default: 0
                    terminationConditions:
                      type: string
                    progressStatus:
                      $ref: '#/components/schemas/ProcessMonitor'
                    cancelProcess:
                      type: boolean
                      default: FALSE
                    suspendProcess:
                      type: boolean
                      default: FALSE
                    trainingRequestRef: ## Figure 7.3a.1.1.1-1 has no such pointer
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
                    participatingFLClientRefList:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo' 
                    trainingReportRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                    mLModelRef:  ## Figure 7.3a.1.1.1-1 is 1-0..1 mapping, hence should be single
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                    mLModelCoordinationGroupRef: 
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
  

    MLTrainingReport-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    usedConsumerTrainingData:
                      type: array
                      uniqueItems: true
                      items:
                        type: string
                        readOnly: true
                    modelConfidenceIndication:
                      type: integer
                      readOnly: true
                    modelPerformanceTraining:
                      type: array
                      uniqueItems: true
                      items:
                        $ref: '#/components/schemas/ModelPerformance'
                    modelPerformanceValidation:
                      type: array
                      uniqueItems: true
                      items:
                        $ref: '#/components/schemas/ModelPerformance'
                    dataRatioTrainingAndValidation:
                      type: integer  
                    areNewTrainingDataUsed:
                      type: boolean
                      readOnly: true
                    fLReportPerClient:
                      type: array
                      uniqueItems: true
                      items:
                        $ref: '#/components/schemas/FLReportPerClient'
                     
                    trainingProcessRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                    lastTrainingRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                    mLModelGeneratedRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                    mLModelCoordinationGroupGeneratedRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'

    MLTestingFunction-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-Attr'
                - type: object
                  properties:  ##FIXME pointer to MLModelCoordinationGroup missing
                    mLModelRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO'
        - type: object
          properties:
            MLTestingRequest:
              $ref: '#/components/schemas/MLTestingRequest-Multiple'
            MLTestingReport:
              $ref: '#/components/schemas/MLTestingReport-Multiple'

    MLTestingRequest-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    requestStatus:
                      $ref: '#/components/schemas/RequestStatus'
                    cancelRequest:
                      type: boolean
                      default: FALSE
                    suspendRequest:
                      type: boolean
                      default: FALSE
                    mLModelRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                    mLModelCoordinationGroupRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'

    MLTestingReport-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    modelPerformanceTesting:
                      type: array
                      uniqueItems: true
                      items:
                        $ref: '#/components/schemas/ModelPerformance'
                    mLTestingResult:
                      type: string
                      readOnly: true
                    testingRequestRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'

    MLModelLoadingRequest-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    requestStatus:
                      $ref: '#/components/schemas/RequestStatus'
                    cancelRequest:
                      type: boolean
                      default: FALSE
                    suspendRequest:
                      type: boolean 
                      default: FALSE
                    mLModelToLoadRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'

    MLModelLoadingPolicy-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    aIMLInferenceName:
                      $ref: '#/components/schemas/AIMLInferenceName'
                    policyForLoading:
                      $ref: '#/components/schemas/AIMLManagementPolicy'
                    mLModelRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'

    MLModelLoadingProcess-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              allOf:
                - type: object
                  properties:
                    progressStatus:
                      $ref: '#/components/schemas/ProcessMonitor'
                    cancelProcess:
                      type: boolean
                      default: FALSE
                    suspendProcess:
                      type: boolean
                      default: FALSE
                    mLModelLoadingRequestRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
                    mLModelLoadingPolicyRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
                    loadedMLModelRef:
                      $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
                      uniqueItems: true

    MLModel-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              type: object
              properties:
                mLModelId:
                  type: string
                  readOnly: true
                aIMLInferenceName:
                  $ref: '#/components/schemas/AIMLInferenceName'
                mLModelVersion:
                  type: string
                  readOnly: true
                expectedRunTimeContext:
                  $ref: '#/components/schemas/MLContext'
                trainingContext:
                  $ref: '#/components/schemas/MLContext'
                runTimeContext:
                  $ref: '#/components/schemas/MLContext'
                supportedPerformanceIndicators:
                  type: array
                  uniqueItems: true
                  items:
                    $ref: '#/components/schemas/SupportedPerfIndicator'
                  minItems: 1
                mLCapabilitiesInfoList:
                  type: array
                  uniqueItems: true
                  items:
                    $ref: '#/components/schemas/MLCapabilityInfo'
                  minItems: 1
                mLTrainingType:
                  type: string
                  enum:
                    - INITIAL_TRAINING
                    - PRE_SPECIALISED_TRAINING
                    - RE_TRAINING
                    - FINE_TUNING
                  readOnly: true
                inferenceScope:
                  type: array
                  items: 
                    $ref: '#/components/schemas/AIMLInferenceName'
                retrainingEventsMonitorRef:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn'
                sourceTrainedMLModelRef:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                aIMLInferenceReportRefList:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
                usedByFunctionRefList:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'

    MLModelRepository-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            MLModel:
              $ref: '#/components/schemas/MLModel-Multiple'
            MLModelCoordinationGroup:
              $ref: '#/components/schemas/MLModelCoordinationGroup-Multiple'
    
    MLModelCoordinationGroup-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              type: object
              properties:
                memberMLModelRefList:
                  type: array
                  uniqueItems: true
                  items:
                    $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                  minItems: 2

    ## 7.3a.4.1 IOC
    MLUpdateFunction-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
             attributes:
               allOf:
                 - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-Attr'
                 - type: object
                   properties:
                     availMLCapabilityReport:
                       $ref: '#/components/schemas/AvailMLCapabilityReport'
                     mLModelRef:
                       $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO'
        - type: object
          properties:
            MLUpdateRequest:
              $ref: '#/components/schemas/MLUpdateRequest-Multiple'
            MLUpdateProcess:
              $ref: '#/components/schemas/MLUpdateProcess-Multiple'
            MLUpdateReport:
              $ref: '#/components/schemas/MLUpdateReport-Multiple'

    MLUpdateRequest-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              type: object
              properties:
                performanceGainThreshold:
                  type: array
                  uniqueItems: true
                  items:
                    $ref: '#/components/schemas/ModelPerformance'
                newCapabilityVersionId:
                  type: array
                  uniqueItems: true
                  items:
                    type: string
                updateTimeDeadline:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow'
                requestStatus:
                  $ref: '#/components/schemas/RequestStatus'
                mLUpdateReportingPeriod:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow'
                cancelRequest:
                  type: boolean
                  default: FALSE
                suspendRequest:
                  type: boolean 
                  default: FALSE
                mLUpdateProcessRef:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnRo'
                mLModelRefList:
                  $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnListRo'

    MLUpdateProcess-Single:
      allOf:
        - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top'
        - type: object
          properties:
            attributes:
              type: object
              properties:
                progressStatus:
                  $ref: '#/components/schemas/ProcessMonitor'
                cancelProcess:
                  type: boolean
                  default: FALSE
                suspendProcess:
                  type: boolean
                  default: FALSE


# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/3gpp/refs/heads/main/openapi/3gpp-ts28105-aimlnrm.yml